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

Write a function to iterate and pluck an inner array's objects

我怎么能用vanilla js或者lodash来returnScene.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,
      }]
  }]

你可以这样做:

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

Demonstration

对于 lodash,您可以使用 pluck 和 flattern:

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

或者减少(普通 js):

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

你可以这样做:

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