javascript动态设置值到对象属性

时间:2015-07-06 06:25:18

标签: 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的新手,所以我需要一些建议。有什么想法吗?

4 个答案:

答案 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;
    }())
};