是否可以动态设置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 :(得分:4)
目前,您将颜色设置为函数,但您希望颜色为数组。
实现这一目标的一种方法是执行以下操作:
var object1 = {
id: 1,
colors: []
};
for(var i = 0; i < result.length; i++) {
object1.colors.push(result[i].color);
}
答案 1 :(得分:0)
您可以forEach
循环迭代数组result
:
var object1 = {id:1, colors:[]};
result.forEach( function (item)
{
object1.colors.push(item.color);
});
答案 2 :(得分: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)
})
答案 3 :(得分:0)
略微改写你的尝试
var object1 = {
id: 1,
colors: (function(){
var ret = [];
result.forEach(function(item) {
ret.push(item.color);
});
return ret;
}())
};