0
进出口试图在数组中,看起来像这样与密钥交换数组元素
[18785:Object, 22260:Object, 22261:Object, 22262:Object, 22263:Object]
我用下面的代码来交换两个数组元素:
that.moveMediumDown = function(mediumID){
var arrKeys = new Array();
for (key in that.data.medium) {
arrKeys.push(parseInt(key));
}
for (var i = 0; i < arrKeys.length; i++){
if (arrKeys[i] === parseInt(mediumID)) {
//swap Medium
var tmpMedium = that.data.medium[arrKeys[i]];
that.data.medium[arrKeys[i]] = that.data.medium[arrKeys[i + 1]];
that.data.medium[arrKeys[i + 1]] = tmpMedium;
break;
}
}
//build new array with correct ids
var tmpMediumArray = new Array();
for (var j = 0; j < arrKeys.length; j++){
tmpMediumArray[arrKeys[j]] = that.data.medium[arrKeys[j]];
}
}
问题是,当我交换内容在两个数组元素中,键保持不变。但我还需要交换密钥。
所以我试图用正确的键建立一个新的数组,但是后来我得到了一个包含22263个元素的数组。他们中的大多数都是未定义的,只有5个是正确的。
有没有办法做到这一点,而没有得到这样一个大阵?
在此先感谢您的帮助。
有趣的链接 – Edakos
感谢您的回答。但我尝试交换元素,而不是翻转键和值。或者我错过了什么? – NaNO3
也许我误解了你的意思是“交换元素”?你试图将键作为'arrKeys'与数组元素交换,所以它是一样的。 – helion3