如何在不使用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]);
}https://stackoverflow.com/questions/66348496
复制相似问题