如何拼接数组中的重复项

Mah*_*eva 5 javascript arrays

我正在尝试在 JavaScript 中编写一个函数,该函数接受一个包含重复项的数组并返回相同的数组,删除重复项。我知道如何使用 Set、filter 和 reduce 来做到这一点,但我想尝试在不使用这些函数的情况下做到这一点。问题是,一旦找到重复项,我不知道如何拼接它们,所以如果发现该项为重复项,我该如何从数组中删除它,这是我的代码:

function clearDuplicatesInArray(arr, item) {
 for(i = 0; i < arr.length; i++) {
   for(j = 0; j < arr.length; j++) {
      if(arr[i] === arr[j]) {
       arr.splice(arr[i], arr[j])
      }
    }
  }
 return arr;
}

clearDuplicatesInArray([1,1,2,3]);
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 5

您可以从末尾迭代,以防止对尚未访问的索引进行切片,并使用第二个循环直到外部索引,因为在此索引上,您已经访问了项目。

对于拼接,以索引和一为参数,删除给定索引处的一个元素。

function clearDuplicatesInArray(array, item) {
    var i = array.length,
        j;
    
    while (--i) {
        for (j = 0; j < i; j++) {
            if (array[i] === array[j]) {
                array.splice(i, 1);
                break;
            }
        }
    }
    return array;
}

console.log(clearDuplicatesInArray([1, 1, 2, 3]));
Run Code Online (Sandbox Code Playgroud)


Ami*_*mit 1

我只是要修复您的代码,尽管您可以通过许多不同的方式获得解决方案。

function clearDuplicatesInArray(arr, item) {
 for(i = 0; i < arr.length; i++) {
   for(j = i+1; j < arr.length; j++) {
      if(arr[i] === arr[j]) {
       arr.splice(i, 1);
       i--;
       break;
      }
    }
  }
 return arr;
}

console.log(clearDuplicatesInArray([1,1,2,3]));
Run Code Online (Sandbox Code Playgroud)