gpt4 book ai didi

javascript - 通过javascript重新排序数组对象

转载 作者:行者123 更新时间:2023-12-03 11:52:08 26 4
gpt4 key购买 nike

我已经做了一些排序,但仍然不明白为什么结果是[]。你们能帮我解决我缺少的东西吗?

我有我的原始数组对象:

var data = [
{message:'hello', username:'user1'},
{message:'data', username:'user1'},
{message:'sample', username:'user2'},
{message:'here', username:'user2'},
];

我的功能是:

var chat = [];
function reorder(obj) {
obj.forEach( function(val, i) {
if(typeof chat[val.username] === 'undefined') {
chat[val.username] = [];
chat[val.username].push(val);
}
else
chat[val.username].push(val);
});
return chat;
}

在我的控制台上:

reorder(data);

我期望有:

var data2 = [
'user1': [{message:'hello', username:'user1'}, {message:'data', username:'user1'} ],
'user2': [{message:'sample', username:'user2'}, {message:'here', username:'user2'} ],
];

最佳答案

您可以使用reduce轻松完成此操作:

var data2 = data.reduce(function(acc, x) {
acc[x.username] = (acc[x.username] || []).concat(x)
return acc
},{})
/*^
{ user1:
[ { message: 'hello', username: 'user1' },
{ message: 'data', username: 'user1' } ],
user2:
[ { message: 'sample', username: 'user2' },
{ message: 'here', username: 'user2' } ] }
*/

关于javascript - 通过javascript重新排序数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25780311/

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