gpt4 book ai didi

javascript - Lodash 使用对象本身获取重复计数

转载 作者:行者123 更新时间:2023-11-30 16:30:04 27 4
gpt4 key购买 nike

我有一个对象数组,例如:

[  {
"username": "user1",
"profile_picture": "TESTjpg",
"id": "123123",
"full_name": "User 1"
}, {
"username": "user2",
"profile_picture": "TESTjpg",
"id": "43679144425",
"full_name": "User 2"
}, {
"username": "user2",
"profile_picture": "TESTjpg",
"id": "43679144425",
"full_name": "User 2"
} ]

我想得到:

[  {
"username": "user1",
"profile_picture": "TESTjpg",
"id": "123123",
"full_name": "User 1",
"count": 1
}, {
"username": "user2",
"profile_picture": "TESTjpg",
"id": "43679144425",
"full_name": "User 2",
"count": 2
} ]

我在这个方法中使用了 lodash a.k.a. 下划线,但未能处理它。

var uniqueComments =  _.chain(comments).uniq(function(item) { return item.from.id; }).value();
var resComment = [];
_.forEach(uniqueComments, function(unco) {
unco.count = _.find(comments, function(comment) {
return unco.id === comment.id
}).length;

resComment.push(unco);
});

结果应该在resComment中。

编辑:更新了对象数组。

最佳答案

我会考虑使用 _.reduce(),因为这就是您正在做的事情——将给定数组缩减为包含不同类型对象的(可能)更小的数组。

使用 _.reduce(),你会做这样的事情:

var resComment = _.reduce(comments, function(mem, next) {
var username = next.username;
var existingObj = _.find(mem, function(item) { return item.username === username; });
existingObj ? existingObj.count++ : mem.push(_.extend(next, {count: 1}));
return mem;
}, []);

这是一个 JSFiddle .

关于javascript - Lodash 使用对象本身获取重复计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445341/

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