将对象中的所有数组合并为一个数组。

时间:2017-04-19 18:34:08

标签: javascript arrays google-chrome google-chrome-extension

我正在为Google Chrome开发一个扩展程序,我想将某个对象中的所有数组合并到一个数组中,而不是将它们拆分。所以现在,我的控制台o

chrome.storage.sync.get(null, function(all) {
// this returns everything in chrome's storage. 
}

在我的控制台中看起来像这样:

enter image description here

但是,我希望它实际上将所有的网络合并为一个,如下:

对象

feed_0:数组[364]

我试过这个:

    chrome.storage.sync.get(null, function(all) {
  var test = {}; test = all;
  delete test['currently.settings'];

console.log(test);

var alpha = [];

var result = 0;
  for(var prop in test) {
    if (test.hasOwnProperty(prop)) {
       var second = alpha.concat(prop);

      console.log(second);
    // or Object.prototype.hasOwnProperty.call(obj, prop)
      result++;
    }
  }

   });

但是这会返回:

enter image description here

2 个答案:

答案 0 :(得分:1)

以下是如何从all参数中获取一个数组:

var test = Object.keys(all).reduce( (acc, a) => acc.concat(all[a]), [] );

要将其分配给feed_0属性,当然不是困难:

test = { feed_0: test };

答案 1 :(得分:0)

您可以使用feed_NArray#reduceObject.keys数组合并到一个属性中:

var data = {
  feed_0: [0, 1, 2],
  feed_1: [3, 4, 5],
  feed_2: [6, 7, 8],
  feed_3: [9, 10, 11]
}

data = Object.keys(data).reduce(function(result, k) {
  [].push.apply(result.feed_0, data[k])
  return result
}, { feed_0: [] })

console.log(data)