Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过将键值分组来创建多个数组?_Javascript_Arrays_Sorting_Key - Fatal编程技术网

Javascript 如何通过将键值分组来创建多个数组?

Javascript 如何通过将键值分组来创建多个数组?,javascript,arrays,sorting,key,Javascript,Arrays,Sorting,Key,我有一张物品清单 存储=[{ “姓名”:“付款人身份”, “年份”:“2016年”, “重要性”:0.015 }, { “名称”:“ENTRILLO AS”, “年份”:“2017年”, “重要性”:0.432000000000000005 }, { “名称”:“ENTRILLO AS”, “年份”:“2017年”, “重要性”:0.432000000000000005 }] 通过这个数组,我希望创建一个新的数组,在一个列表中包含两个列表,我们按照名称键进行排序 列表=[ [{ “姓名”:“付

我有一张物品清单

存储=[{
“姓名”:“付款人身份”,
“年份”:“2016年”,
“重要性”:0.015
}, {
“名称”:“ENTRILLO AS”,
“年份”:“2017年”,
“重要性”:0.432000000000000005
}, {
“名称”:“ENTRILLO AS”,
“年份”:“2017年”,
“重要性”:0.432000000000000005
}]
通过这个数组,我希望创建一个新的数组,在一个列表中包含两个列表,我们按照名称键进行排序

列表=[
[{
“姓名”:“付款人身份”,
“年份”:“2016年”,
“重要性”:0.015
}],
[{
“名称”:“ENTRILLO AS”,
“年份”:“2017年”,
“重要性”:0.432000000000000005
}, {
“名称”:“ENTRILLO AS”,
“年份”:“2017年”,
“重要性”:0.432000000000000005
}]
]
在javascript中有什么简单的方法可以做到这一点吗

我尝试过创建一组新数组并添加到其中,但是,我遇到了一个问题,我需要知道我之前有多少name元素,而我不一定知道


谢谢,如果这是个愚蠢的问题,我很抱歉

首先制作一个映射,将分组键映射到项目(我认为这也更容易使用)。在您的示例中,它是
name
。可以使用此映射创建嵌套数组:

const rawData=[
{
“姓名”:“付款人身份”,
“年份”:“2016年”,
“重要性”:0.015,
},
{
“名称”:“ENTRILLO AS”,
“年份”:“2017年”,
“重要性”:0.432000000000000005,
},
{
“名称”:“ENTRILLO AS”,
“年份”:“2017年”,
“重要性”:0.432000000000000005,
},
];
const companyToData=rawData.reduce((会计科目,项目)=>{
const foo=acc[item.name]?acc[item.name]:[];
返回{
…acc,
[项目名称]:[
……福,
项目
],
};
}, {});
常量数据=对象值(companyToData);

控制台日志(数据)
var list=storage.map(i=>[i])看起来更像是你想按年份对它们进行分组。我会的,谢谢你。对于你的其他评论,是的,在这种情况下,我可以按年份排序,但通常情况下,我的情况下的年份并不总是与我想要的分组方式一致。