【发布时间】:2018-02-19 06:08:54
【问题描述】:
考虑以下 Javascript 中的对象(这是一个非常大的对象,所以我只包含了它的一部分)。
我想应用以下内容:
对于每个唯一用户,最多允许 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 有更好的方法来做到这一点?
【问题讨论】:
-
是的,你在正确的轨道上。祝你好运。
-
创建一个查找表或映射对象,其中
user值是键,并将lead_id存储为值数组。查找user和如果数组长度lead_id -
您也可以更改结构,例如 { useId: 1234, lead_ids: [a,b,c,d] } 甚至更好的 users = { 123 : [a, b, c, d], 456 : [x,y,z] }
标签: javascript arrays loops object duplicates