2011-07-24 116 views
2

考慮這個定義對象:重新映射對象屬性

var map = { 
    'Username': 
    { 
    'user-name': 'userName', 
    'first-name': 'fName', 
    'last-name': 'lName', 
    'active': 'isActive' 
    } 
} 

我如何重新映射對象,比如這個:

data: 
{ 
    'user-name': SamN, 
    'first-name': Sam, 
    'last-name': Norbert, 
    'active': 1 
} 

得到這樣的輸出:

data: 
{ 
    'userName': SamN, 
    'fName': Sam, 
    'lName': Norbert, 
    'isActive': 1 
} 

回答

5

簡單地遍歷屬性:

for(var prop in data) { 
    if(data.hasOwnProperty(prop) && prop in map.Username) { 
     data[map.Username[prop]] = data[prop]; 
     delete data[prop]; 
    } 
} 

這將更改對象。如果你想創建一個新的對象,只需在新的空對象上設置屬性即可。

您也可以改爲反覆使用map.Username的屬性。

+0

如果我把它放在一個函數中,JS是否支持引用傳遞?或者我創建一個臨時對象? – HyderA

+0

@gAMBOOKa:對象總是按引用傳遞。 –