2016-06-10 84 views
0

如果我有喜歡的對象:使用的參考對象屬性

var myObj = { 'name,number,level': 'Mike,b1,0' }; 

如何我可以引用它的屬性?

如何使用:

myObj.name 
myObj.number 
myObj.level 
+0

你只需要一鍵MyObj中[「的名稱,數量,水平」] – maioman

+1

需要明確的是,你要轉換'{ 'name,number,level':'Mike,b1,0'}'爲'{'name':'Mike','number':'b1','level':'0'}'? –

+0

你的問題不清楚。你能解釋一下嗎?一個對象如何有爭論?你是指屬性? –

回答

2

您需要使用方括號:myObj['name,number,level']來獲取值。如果你想在各個部分映射(你只能擁有這關鍵的),你可以這樣做:

var newObj = {}, 
    values = myObj['name,number,level'].split(','); 

newObj.name = values[0]; 
newObj.number = values[1]; 
newObj.level = values[2]; 

更通用的方式來做到這將是:

function convertToIndividualKeys(obj) { 
    var key, keys, values, newObj = {}; 
    for(key in obj) { 
    if(obj.hasOwnProperty(key)) { 
     keys = key.split(','); 
     values = obj[key].split(','); 
     for (var i = 0; i < keys.length && i < values.length; i++) { 
     newObj[keys[i]] = values[i]; 
     } 
    } 
    } 

    return newObj; 
} 

var myObj = { 'name,number,level': 'Mike,b1,0' }; 
myObj = convertToIndividualKeys(myObj); 

// Now you can access it the way you would like 
myObj.name // gives "Mike" 

注:

通過這些轉換,這些值將全部爲字符串。您示例中的0實際上將爲'0',因此您可能需要手動將其轉換爲整數,具體取決於您如何使用它。

這將覆蓋其它的值,如果你有多個按鍵,即myObj = { 'name,number': 'A,1', 'name2,number': 'B,2' };可能會變成{ name: 'A', name2: 'B', number: 2 }

+0

:我打開了一個新帖子,如果你有興趣[這裏](http://stackoverflow.com/questions/37747912/use-a-reference-to-many-entries-object-properties) – George

1

您可以分割初始密鑰找出一個鍵,然後用它們來創建新的對象,你想要的方式。這裏是示例代碼。

var myObj = { 
 
    'name,number,level': 'Mike,b1,0' 
 
}; 
 
for (var i in myObj) { 
 
    var keys = i; 
 
    var value = myObj[i]; 
 
    keysArray = keys.split(","); 
 
    valArray = value.split(","); 
 

 
    var newObj = {}; 
 
    for (i = 0; i < keysArray.length; i++) { 
 

 
    newObj[keysArray[i]] = valArray[i]; 
 

 
    } 
 

 
    alert(newObj.name); 
 
    alert(newObj.number); 
 
    alert(newObj.level); 
 
}

+0

只需要指出,只有在對象中只有一個鍵的情況下,此解決方案纔有效。只有對象中的最後一個鍵/值對纔會被處理。 – rdubya