我试图在一个看起来像这个
的数组中交换两个数组元素[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个是正确的。
有没有方法可以做到这一点而不需要这么大的阵列?
提前感谢您的帮助。
答案 0 :(得分:1)