我有一個對象playerInfoObject屬性爲w1和w2,它們也是對象。如何更改對象屬性的位置?
我需要改變他們之間的地方彼此
他們相等時,我試圖做到這一點:
var tmp = playerInfoObject.w1;
playerInfoObject.w1 = playerInfoObject.w2;
playerInfoObject.w2 = tmp;
我怎樣才能解決這個問題?
預先感謝您
我有一個對象playerInfoObject屬性爲w1和w2,它們也是對象。如何更改對象屬性的位置?
我需要改變他們之間的地方彼此
他們相等時,我試圖做到這一點:
var tmp = playerInfoObject.w1;
playerInfoObject.w1 = playerInfoObject.w2;
playerInfoObject.w2 = tmp;
我怎樣才能解決這個問題?
預先感謝您
如果你可以使用的EcmaScript 6,destructuring assignment可以解決它沒有一個臨時變量:
playerInfoObject = {
w1: {w: '1'},
w2: {w: '2'}
};
[playerInfoObject.w1, playerInfoObject.w2] = [playerInfoObject.w2, playerInfoObject.w1];
或用object destructuring直接:
({w1: playerInfoObject.w2, w2: playerInfoObject.w1}) = playerInfoObject;
否則,你的代碼似乎工作正常。
=
運算符在對象之間放置一個引用,您需要克隆它。
var tmp = JSON.decode(JSON.encode(playerInfoObject.w1));
playerInfoObject.w1 = JSON.decode(JSON.encode(playerInfoObject.w2));
playerInfoObject.w2 = tmp;
你可以找到克隆對象更優雅的方式,但這應該工作。
也許[this](http://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-clone-an-object)可以幫助你嗎?除非我不明白你的問題 – Burki
你如何定義變量'playerInfoObject'? –
http://jsfiddle.net/arunpjohny/kkgy0co6/1/? –