【发布时间】:2019-08-10 19:43:54
【问题描述】:
我收到这个问题是为了练习,但措辞让我很困惑,因为我看到了它可能想要的 2 个结果。
无论哪种方式,我都希望看到这两种解决方案。
例如,如果我有一个数组:
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
我认为这是想要最终结果:
let finalResult = [1, 2, 3, 4, 5, 8, 9, 10];
或者:
let finalResult = [1, 9, 10];
两者之间的区别,一个只是删除所有重复的数字并留下其余部分,第二个只是想要任何不重复的数字。
无论哪种方式,我都想编写两个函数,每个函数都执行一个。
这个,别人给出的,给出了我的第二个解决方案。
let elems = {},
arr2 = arr.filter(function (e) {
if (elems[e] === undefined) {
elems[e] = true;
return true;
}
return false;
});
console.log(arr2);
我不确定第一个函数的功能(删除所有重复项)。
【问题讨论】:
-
如果你使用的是lodash,你可以使用
_.uniq() -
进一步,这是要求 Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array 的倒数。最后,这篇文章提出了两个不同的问题,并且两者在其他地方已经有了很好的答案。
-
在评论回答中回答“它是哪一个”的问题:如果您被要求删除重复项,我相信您应该了解第一个变体。第二个变体删除所有 具有 重复项的元素,即“原始”值及其重复项。
标签: javascript arrays duplicates