我不确定该问题标题的措辞如何,希望我的解释会更有意义。我有一个包含190个对象的数组,每个对象包含六个键和值,如下所示:
我的目标是创建一个以年份开始的数组,然后是该年的所有值,如下所示:
[
[2000,16707,2416,8653,22176,1047,24096,27045,86019,27667,231],
[2001,18249,2605,8458,22164,1181,24785,26497,85163,28912,316],
[2002,.....]
...
]
现在,这是我的代码:
var dataNumbers = new Array();
for (var i = 0; i < data.length; i++) {
if (data[i].Countries == country) {
dataNumbers.push([data[i].Periods, data[i].Value])
}
}
这将导致一个看起来像这样的数组:
[
[2000,16707],
[2000,2416],
[2000,8653],
[2000,22176],
...
...
]
如何对案例中的“期间”中匹配的所有数字进行分组?
答案 0 :(得分:1)
您可以将一个对象作为哈希表以对同一Peroids
进行分组,并获取哈希表的值作为结果。
result = Object.values(data.reduce((r, { Periods, Value }) => {
r[Periods] = r[Periods] || [Periods];
r[Periods].push(Value);
return r;
}, {}));
使用Map
的方法稍有不同。
result = Array.from(
data.reduce((m, { Periods, Value }) => m.set(Periods, [...(m.get(Periods) || []), Value]), new Map),
(k, v) => [k, ...v]
);