gpt4 book ai didi

javascript - js : sort and rearrange array of object

转载 作者:行者123 更新时间:2023-11-28 14:27:20 26 4
gpt4 key购买 nike

我的数组对象如下例所示。

[
{'email':'test@gmail.com', 'name':'abc'},
{'email':'test1@gmail.com', 'name':'bbc'},
{'email':'test2@gmail.com', 'name':'aaa'},
{'email':'test3@gmail.com', 'name':'cba'},
{'email':'test3@gmail.com', 'name':'cab'},
]

所以我的新数组将以字母 A 的键值对作为键,值都是名称以 A 字母开头的对象,依此类推。还有一件事如果字母表 A 有 2 个从 a 开始的对象,那么我也想按升序排序,如下面的最终输出示例所示

我想要的最终输出是这样的。

[
"a" : [{'email':'test@gmail.com', 'name':'aaa'},{'email':'test2@gmail.com', 'name':'abc'}],
"b" : [{'email':'test1@gmail.com', 'name':'bbc'}],
"c" : [{'email':'test3@gmail.com', 'name':'cab'},{'email':'test3@gmail.com', 'name':'cba'}]
]

最佳答案

您可以使用reduce方法创建一个对象,并使用内部sort方法按名称对值进行排序。

const data = [{'email':'test@gmail.com', 'name':'Abc'},{'email':'test1@gmail.com', 'name':'bbc'},{'email':'test2@gmail.com', 'name':'aaa'},{'email':'test3@gmail.com', 'name':'cba'},{'email':'test3@gmail.com', 'name':'cab'},]

const sorted = data.reduce((r, o) => {
let key = o.name.slice(0, 1).toLowerCase();
r[key] = (r[key] || []).concat(o);
r[key].sort((a, b) => a.name.localeCompare(b.name));
return r;
}, {})

console.log(sorted)

关于javascript - js : sort and rearrange array of object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52717665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com