2015-07-06 194 views
0

是否可以動態設置值爲javascript對象。 例如我有以下對象數組:javascript動態設置對象屬性值

var result = [ 
    {id: 1,color: ['black']}, 
    {id: 1,color: ['white']}, 
    {id: 1,color: ['green']} 
]; 

和創建另一個時,我想從陣列結果所有值color 設置爲新的對象。基本上,我希望它看起來像這樣:

{id:1, colors: ['black', 'white', 'green']} 

我想是這樣的:

var result = [ 
    {id: 1,color: ['black']}, 
    {id: 1,color: ['white']}, 
    {id: 1,color: ['green']} 
]; 

var object1 = { 
    id: 1, 
    colors: function(){ 
     for(i = 1; i < result.length; i++) { 
      this.colors.push(result[i].color); 
     } 
    } 
}; 

,但它不工作,我基本上明白爲什麼,我只是在尋找解決辦法的解決方案。我對JavaScript很新,所以我需要一些建議。有任何想法嗎?

+0

所有的答案稍有重寫做一個假設,你只能有一個值ID(即1)。那是你要的嗎?是否會有任何id爲2或具有不同id的對象? – RobG

回答

4

當前,您將顏色設置爲函數,但您希望顏色是一個數組。實現這一

一種方法是做到以下幾點:

var object1 = { 
    id: 1, 
    colors: [] 
}; 

for(var i = 0; i < result.length; i++) { 
    object1.colors.push(result[i].color); 
} 
+0

非常感謝!正是我需要的! – user3673623

+0

@ user3673623你能接受答案嗎? –

0

可以forEach循環遍歷數組result

var object1 = {id:1, colors:[]}; 

result.forEach(function (item) 
{ 
    object1.colors.push(item.color); 
}); 
0

你能做到這樣。

var result = [ 
    {id: 1,color: ['black']}, 
    {id: 1,color: ['white']}, 
    {id: 1,color: ['green']} 
]; 

var arrResult = {id:1,colors : []} 

result.forEach(function(val,key){    
     arrResult.colors=arrResult.colors.concat(val.color) 
}) 
0

您嘗試

var object1 = { 
    id: 1, 
    colors: (function(){ 
     var ret = []; 
     result.forEach(function(item) { 
      ret.push(item.color); 
     }); 
     return ret; 
    }()) 
};