获取Javascript数组的唯一值

获取Javascript数组的唯一值,javascript,arrays,unique-values,Javascript,Arrays,Unique Values,我试图用JavaScript编写一个函数来获得唯一的值​​数组,但我的代码不能正常工作。我知道还有其他更好更简单的方法,但我不明白为什么我的代码不起作用,我想理解它 该函数有两个for循环,如果外部索引和内部索引不同,并且这些索引位置的值相同,则内部索引的位置将被推送到另一个数组。当内部for循环结束时,另一个数组中指定的索引将在原始数组中替换为空值,以便稍后删除 输入是:12343445 但是输出是:1 2空空空空空空空空空空空4 4 5 5 5 5 我不知道出了什么问题,有人能帮我吗 fun

我试图用JavaScript编写一个函数来获得唯一的值​​数组,但我的代码不能正常工作。我知道还有其他更好更简单的方法,但我不明白为什么我的代码不起作用,我想理解它

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

输入是:12343445

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

我不知道出了什么问题,有人能帮我吗

function uniqueArrayValues(vector) {
  var indexRepeated = [];
  for (let i in vector) {
    for (let j in vector) {
      if (vector[i] == vector[j] && i != j && j != null && i != null && i < j ) {
        indexRepeated.push(j);
      }
    }
    for (let i in indexRepeated) {
      if (vector[indexRepeated[i]] != null) {
        vector.splice(vector[indexRepeated[i]], 1, null);
      }
    }
  }
}
函数唯一数组值(向量){
var指数重复=[];
for(让我输入向量){
for(设j为向量){
如果(向量[i]==向量[j]&&i!=j&&j!=null&&i!=null&&i
你就快到了

方法的第一个参数是开始索引,即开始更改数组的索引

在代码中,
vector.splice(vector[indexRepeated[i]],1,null)
您在
vector
数组中传递的是该索引处的值,而不是该索引。这就是产生意外输出的原因

只需将该行更改为
vector.splice(indexRepeated[i],1,null)和过滤器
null

现场示例:

函数唯一数组值(向量){
var指数重复=[];
for(让我输入向量){
for(设j为向量){
如果(向量[i]==向量[j]&&i!=j&&j!=null&&i!=null&&ivalue!==null);//也可以使用vector.filter(value=>value);
}
var arr=[1,2,2,3,3,4,4,4,4,5,5,5,5];

console.log(uniquearrayvalue(arr))从数组中获取所有唯一值的简单方法是将数组转换为一个集合

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 }

正如您所想,只需像这样定义函数

function uniqueArrayValues(vector) {
  //var indexRepeated = [];
  for (let i in vector) {
    for (let j in vector) {
      if (vector[i] == vector[j] && i < j ) {
        vector[j]=null;
      }
    }

  }
}
函数唯一数组值(向量){
//var指数重复=[];
for(让我输入向量){
for(设j为向量){
if(向量[i]==向量[j]&&i
indexRepeated的循环异常。 顺便说一下,您可以更改这些代码
vector.splice(vector[indexRepeated[i]],1,null)到向量拼接(索引重复[i],1,空),它也工作了。

Array.from(新集合([1,1,2,3])