簡體   English   中英

javascript動態將值設置為對象屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM