[英]javascript dynamically set value to object property
是否可以動態地將值設置為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很陌生,所以我需要一些建議。 有任何想法嗎?
當前,您正在將顏色設置為函數,但您希望顏色為數組。
一種實現方法是執行以下操作:
var object1 = {
id: 1,
colors: []
};
for(var i = 0; i < result.length; i++) {
object1.colors.push(result[i].color);
}
您可以forEach
循環來迭代數組result
:
var object1 = {id:1, colors:[]};
result.forEach( function (item)
{
object1.colors.push(item.color);
});
您可以通過這種方式進行。
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)
})
稍微重寫您的嘗試
var object1 = {
id: 1,
colors: (function(){
var ret = [];
result.forEach(function(item) {
ret.push(item.color);
});
return ret;
}())
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.