如何在不使用Set的情况下删除数组中的所有重复项(因为这样会打乱顺序)
为什么我的带有拼接方法的循环不能工作?
let result = [
'j', 'a', 'a', 'v',
'a', 'a', 's', 'c',
'r', 'i', 'p', 't'
]
;
for (let i = 0; i < result.length; i++) {
if (result[i] === result[i + 1]){
result.splice(result.indexOf(result[i]), 1);
}
}
console.log(result) //[ "j", "v", "a", "a", "s", "c", "r", "i", "p", "t" ]
expected output - > [ "j", "a", "v", "a", "s", "c", "r", "i", "p", "t" ]发布于 2021-02-24 18:10:09
您的方法在您的条件下失败:
if (result[i] === result[i + 1])因为您只检查下一项是否与当前项相同,而不是针对整个数组。
要解决此问题,您可以创建一个新数组,并只将尚未存在的值推入此数组,从而消除重复项。
const result2 = [];
for (let i = 0; i < result.length; i += 1) {
if (result2.indexOf(result[i])>-1) {
continue;
}
result2.push(result[i]);
}发布于 2021-02-24 18:01:57
您可以过滤数组并查看前一个数组。
const
data = ['j', 'a', 'a', 'v', 'a', 'a', 's', 'c', 'r', 'i', 'p', 't'],
result = data.filter((v, i, a) => v !== a[i - 1]);
console.log(...result);
发布于 2021-02-24 18:14:06
我认为要从数组中删除重复项,可以编写一个函数来完成这项工作,然后返回包含唯一项的数组。请找到以下服务于该提议的代码。
function removeDuplicate(data) {
const tempArray = [];
data.forEach( (item) => {
if (tempArray.indexOf(item) === -1) {
tempArray.push(item);
}
});
return tempArray;}
令result = 'j','a','a','v','a','a','s','c','r','i','p','t‘;
result =removeDuplicate(结果);
https://stackoverflow.com/questions/66348496
复制相似问题