我正在为Google Chrome开发一个扩展程序,我想将某个对象中的所有数组合并到一个数组中,而不是将它们拆分。所以现在,我的控制台o
chrome.storage.sync.get(null, function(all) {
// this returns everything in chrome's storage.
}
在我的控制台中看起来像这样:
但是,我希望它实际上将所有的网络合并为一个,如下:
对象
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++;
}
}
});
但是这会返回:
答案 0 :(得分:1)
以下是如何从all
参数中获取一个数组:
var test = Object.keys(all).reduce( (acc, a) => acc.concat(all[a]), [] );
要将其分配给feed_0
属性,当然不是困难:
test = { feed_0: test };
答案 1 :(得分:0)
您可以使用feed_N
和Array#reduce
将Object.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)