Javascript 将数组中具有相同值的对象排序为同一数组中的一个对象
我发出获取请求,返回如下对象数组:Javascript 将数组中具有相同值的对象排序为同一数组中的一个对象,javascript,arrays,json,javascript-objects,Javascript,Arrays,Json,Javascript Objects,我发出获取请求,返回如下对象数组: [ {"id":11,"name":"test1","day":"MON","level":2}, {"id":13,"name":"test2","day":"TUE","level":3}, {&quo
[
{"id":11,"name":"test1","day":"MON","level":2},
{"id":13,"name":"test2","day":"TUE","level":3},
{"id":14,"name":"test1","day":"WED","level":4},
{"id":15,"name":"test2","day":"FRI","level":5}
]
在这个数组中,我有四个对象,每两个都有相同的名称,所以我希望结果如下:
{
"test1" : [
{"id":11,"name":"test1","day":"MON","level":2},
{"id":14,"name":"test1","day":"WED","level":4}
],
"test2" :[
{"id":13,"name":"test2","day":"TUE","level":3},
{"id":15,"name":"test2","day":"FRI","level":5}
]
}
您可以使用reduce函数
const arr=[
{“id”:11,“name”:“test1”,“day”:“MON”,“level”:2},
{“id”:13,“name”:“test2”,“day”:“TUE”,“level”:3},
{“id”:14,“name”:“test1”,“day”:“WED”,“level”:4},
{“id”:15,“name”:“test2”,“day”:“FRI”,“level”:5}
];
常数结果=arr.reduce((acc,cur)=>{
acc[当前名称]=acc[当前名称]| |[];
acc[当前名称].推送(当前);
返回acc;
}, {})
控制台日志(结果);
log(Object.values(result.flat())代码>现在有道理了。您要查找的是groupby
。遗憾的是,JS没有为此提供内置的方法,因为这是一项非常常见的任务,但是如果你在SOi上搜索它,你会发现大约一百万个结果/答案。我注意到,结果
它打印为对象如何将其设置为数组在你的问题中,你提到你想要一个对象。我说得对吗?是的,先生,你说得对,但如果你不介意怎么做,我会很感激的。thankshow阵列会是什么样子?我认为object(正如您所期望的)会让人感觉更深刻我对此感到抱歉,它有点混乱,我想到了array,因为我想在react native中打印从您的答案test1和test2
中得到的结果值,但我不确定是否有其他方法可以做到这一点。谢谢