我有一个对象列表
storage = [{
"name": "PAYR AS",
"year": "2016",
"importance": 0.015
}, {
"name": "ENTRILLO AS",
"year": "2017",
"importance": 0.43200000000000005
}, {
"name": "ENTRILLO AS",
"year": "2017",
"importance": 0.43200000000000005
}]
通过这个数组,我希望创建一个新的数组,在一个列表中有两个列表,我们已经按名称键进行了排序
list = [
[{
"name": "PAYR AS",
"year": "2016",
"importance": 0.015
}],
[{
"name": "ENTRILLO AS",
"year": "2017",
"importance": 0.43200000000000005
}, {
"name": "ENTRILLO AS",
"year": "2017",
"importance": 0.43200000000000005
}]
]
有没有简单的方法可以在javascript中做到这一点?
我尝试创建一定数量的新数组并追加到它们中,但是,我遇到了一个问题,我需要事先知道我有多少个名称元素,而我不一定知道。
谢谢,如果这是一个愚蠢的问题,对不起!
答案 0 :(得分:0)
首先制作一个将分组键映射到项目的映射(我认为这也将更容易使用)。在您的示例中为name
。您可以使用此地图来创建嵌套数组:
const rawData = [
{
"name":"PAYR AS",
"year":"2016",
"importance":0.015,
},
{
"name":"ENTRILLO AS",
"year":"2017",
"importance":0.43200000000000005,
},
{
"name":"ENTRILLO AS",
"year":"2017",
"importance":0.43200000000000005,
},
];
const companyToData = rawData.reduce((acc, item) => {
const foo = acc[item.name] ? acc[item.name] : [];
return {
...acc,
[item.name]: [
...foo,
item,
],
};
}, {});
const data = Object.values(companyToData);
console.log(data);