我正在尝试在 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)
您可以从末尾迭代,以防止对尚未访问的索引进行切片,并使用第二个循环直到外部索引,因为在此索引上,您已经访问了项目。
对于拼接,以索引和一为参数,删除给定索引处的一个元素。
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)
我只是要修复您的代码,尽管您可以通过许多不同的方式获得解决方案。
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)
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |