如何将对象数组值组合成1个数组?

时间:2014-10-10 14:38:55

标签: javascript arrays

我有一个数据对象,每个对象包含一个tags数组,我想循环遍历该对象并抓住每个对象标签并最终将这些值组合成一个名为selections的数组完成循环。但是目前我无法解决这个问题,我尝试将标签推入数组,然后使用下划线_.union方法,并尝试将每个循环数组连接成1,但没有成功。任何人都可以推荐一个解决方案吗?

小提琴:http://jsfiddle.net/24qh7zfv/3/

JS

var selection = [];

var data = ([
    {
        role: "Developer",
        tag: "developer",
        tags: ["Javascript", "CSS", "HTML"] 
    }, {
        role: "Producer",
        tag: "producer",
        tags: ["Project Management", "Pitching", "Billing"] 
    }
]);


for( var i = 0, len = data.length; i < len; i++ ) {
    selection.concat(data[i].tags);
}

console.log(selection);

4 个答案:

答案 0 :(得分:2)

您需要重新分配selection,并将其与此相关联。所以使用:

for( var i = 0, len = data.length; i < len; i++ ) {
    selection = selection.concat(data[i].tags);
}

答案 1 :(得分:1)

这应该有效。

var selection = [];

var data = [
    {
        role: "Developer",
        tag: "developer",
        tags: ["Javascript", "CSS", "HTML"] 
    }, {
        role: "Producer",
        tag: "producer",
        tags: ["Project Management", "Pitching", "Billing"] 
    }
];


for( var i = 0; i < data.length; i++ ) {
    for(var j = 0; j < data[i].tags.length; j++){
      selection.push(data[i].tags[j]);
    }
}

答案 2 :(得分:0)

你可以这样做。

var selection = data.map(function(x){
   return x.tags;
}).join().split(",");

答案 3 :(得分:0)

我认为最好使用concat数组函数。请参阅http://skillgun.com/javascript/arrays/tutorial

中的concat函数