编写一个函数来迭代和弹出内部数组的对象

时间:2015-04-26 17:07:30

标签: javascript arrays lodash

我如何使用vanilla js或lodash将Scene.data [i] .trends返回到一个newArr

输出应如下所示:

var  newArr = superFunction();
console.log(newArr);
=> [{id:100},{id:101},{id:200},{id:201}]

数据集:

Scenes.data = [
  {
    id: 0,
    trends: [
      {
        id: 100,

      },
      {
        id: 101,

      }]
  },
  {
    id: 2,
    trends: [
      {
        id: 200,              
      },
      {
        id: 201,
      }]
  }]

3 个答案:

答案 0 :(得分:2)

你可以这样做:

var newArr = [].concat.apply([], Scenes.data.map(function(v){ return v.trends }));

Demonstration

答案 1 :(得分:2)

使用lodash你可以使用pluck和flattern:

var result = _(scenes).pluck('trends').flattern().value();

或者可以减少(普通js):

var result = scenes.reduce(function(prev, curr) {
  return prev.concat(curr.trends);
}, []);

答案 2 :(得分:1)

你可以这样做:

var newArr = [];

Scenes.data.forEach(function(x) {
    x.trends.forEach(function(trend) {
        var obj = {};
        for(var key in trend) {
            if (trend.hasOwnProperty(key)) {
                obj["" + key + ""] = trend[key];
            }
        }
        newArr.push(obj);
    });
});

Fiddle