gpt4 book ai didi

javascript - 从 Javascript 中的对象中删除过多重复项的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-28 17:48:35 25 4
gpt4 key购买 nike

考虑 Javascript 中的以下对象(这是一个非常大的对象,因此我只包含了其中的一部分)。

enter image description here

我想应用以下内容:

对于每个唯一用户,最多允许 4 个随机潜在客户,然后删除其余的。

例如,如果我有 10 个不同的用户,每个用户各出现 5 次,则对象中将有 50 条记录。我只想为每个用户保留 4 个(哪 4 个并不重要)。这将总共留下 40 条记录。

我不太确定从哪里开始解决这个问题,但这是我到目前为止所做的:

1) 创建一个包含不同用户列表的数组:

["1116", "1075", "1124"]

2)我不知道下一步该做什么。我的猜测是我需要循环遍历我的对象(让我们称之为线索),然后将其与唯一用户数组进行比较。如果存在匹配,则应增加计数器,但如果计数器 = 4,则应跳过领先。这是我的伪代码:

        for (var i = 0; i < leads.length; i++) {
if (leads[i].user == //anything in the users array//) {
//check for existing count property on the unique users array
// if not exist, add a count property to the users array
// else, if the count is 4, destroy [leads[i]]
}//end if
}//end for

我走在正确的道路上吗?或者 JavaScript 有更好的方法来做到这一点吗?

最佳答案

您可以使用array#reduce。创建一个物体并插入引线,一旦其长度等于4就停止插入它。

var leads = [{lead_id: 2433867, user : '1116'}, {lead_id: 2433868, user : '1116'}, {lead_id: 2433869, user : '1116'}, {lead_id: 2433870, user : '1116'}, {lead_id: 2433871, user : '1116'}, {lead_id: 2433872, user : '1116'}, {lead_id: 2433873, user : '1116'}, {lead_id: 2433874, user : '1116'}];

var result = leads.reduce((res, lead) => {
res[lead.user] = res[lead.user] || [];
if(res[lead.user].length < 4)
res[lead.user].push(lead);
return res;
},{})

console.log(Object.values(result)[0]);

关于javascript - 从 Javascript 中的对象中删除过多重复项的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46148260/

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