2015-07-06 5 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). Это то, что вы хотите? Будут ли какие-либо объекты с идентификатором 2 или с разными идентификаторами? – 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; 
    }()) 
}; 
Смежные вопросы