2015-10-12 16 views
-2

我有一個對象playerInfoObject屬性爲w1和w2,它們也是對象。如何更改對象屬性的位置?

我需要改變他們之間的地方彼此

他們相等時,我試圖做到這一點:

var tmp = playerInfoObject.w1; 
    playerInfoObject.w1 = playerInfoObject.w2; 
    playerInfoObject.w2 = tmp; 

我怎樣才能解決這個問題?

預先感謝您

+0

也許[this](http://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-clone-an-object)可以幫助你嗎?除非我不明白你的問題 – Burki

+0

你如何定義變量'playerInfoObject'? –

+1

http://jsfiddle.net/arunpjohny/kkgy0co6/1/? –

回答

0

如果你可以使用的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; 

否則,你的代碼似乎工作正常。

+0

謝謝,但我不能使用它。難道你不能檢查出http://jsfiddle.net/Costa595/62zxdoqz/,仍然沒有幫助 – weratius

+0

它不起作用,部分原因是你沒有定義'playerInfoObject'。 – nils

+0

...因爲你沒有在你的小提琴中加載jQuery。這裏是一個工作示例:https://jsfiddle.net/62zxdoqz/1/ – nils

0

=運算符在對象之間放置一個引用,您需要克隆它。

var tmp = JSON.decode(JSON.encode(playerInfoObject.w1)); 
playerInfoObject.w1 = JSON.decode(JSON.encode(playerInfoObject.w2)); 
playerInfoObject.w2 = tmp; 

你可以找到克隆對象更優雅的方式,但這應該工作。