获取 Javascript 数组的唯一值

Ant*_*ruz 3 javascript arrays unique-values

我试图在 JavaScript 中编写一个函数来获取数组的唯一值 \xe2\x80\x8b\xe2\x80\x8b,但我的代码无法正常工作。我知道还有其他更好、更简单的方法可以做到这一点,但我不明白为什么我的代码不起作用,我想理解它。

\n\n

该函数有两个for循环,如果外部索引和内部索引不同并且这些索引位置的值相同,则内部索引的位置被推送到另一个数组。当内部 for 循环结束时,另一个数组中注释的索引将被原始数组中的空值替换,稍后将被删除。

\n\n

输入为: 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

\n\n

但输出是: 1 2 null null null null 4 4 4 4 5 5 5 5 5

\n\n

我不知道出了什么问题,有人可以帮助我吗?

\n\n
function uniqueArrayValues(vector) {\n  var indexRepeated = [];\n  for (let i in vector) {\n    for (let j in vector) {\n      if (vector[i] == vector[j] && i != j && j != null && i != null && i < j ) {\n        indexRepeated.push(j);\n      }\n    }\n    for (let i in indexRepeated) {\n      if (vector[indexRepeated[i]] != null) {\n        vector.splice(vector[indexRepeated[i]], 1, null);\n      }\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

从数组中获取所有唯一值的一种简单方法是将数组转换为集合。

let arr = [1,2,2,3,3,3,4,4,4,5,5,5,5,5];

let uniqueArr = new Set(arr);

console.log(uniqueArr); ///Set { 1, 2, 3, 4, 5 }
Run Code Online (Sandbox Code Playgroud)