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