gpt4 book ai didi

javascript - 如果数组的连续元素重复,则通过保留该值的一个实例来仅过滤掉该数组

转载 作者:行者123 更新时间:2023-11-28 13:00:18 25 4
gpt4 key购买 nike

JavaScript 中是否有更简洁的方法,可以过滤掉数组中的下一个重复元素(只需在其中保留一个值)?

例如:如果 let arr=[1,2,1,1,3,3,3,4,2,2,1,3],我应该得到类似 [1,2,1,3,4,2,1,3],一种方法是编写一个for循环并使用for循环将其过滤掉

let arr=[1,2,1,1,3,3,3,4,2,2,1,3];    
let newArr =[];
let n = arr.length;
for(let i=0; i<n-1;i++){
if(arr[i]!=arr[i+1]){
newArr.push(arr[i]);
}
}
console.log(newArr);

注意:它不会删除数组中的重复元素,而是在其连续元素重复时保留该值的一个实例。

但是,有没有更简单、更简洁的方法可以用 Javascript 来实现呢?

最佳答案

您可以为此使用reduce()。这只会删除连续的重复项。第一个元素会自动包含在内,然后它只检查当前元素是否与前一个元素不同。如果是这样,它将插入结果。

let arr=[1,2,1,1,3,3,3,4,2,2,1,3]
let res = arr.reduce((a,c,i,ar) => {
if (i == 0 || ar[i] !== ar[i-1]) a.push(c)
return a
}, [])

console.log(res)

您还可以使用filter(),这可能是一个更干净的解决方案:

let arr=[1,2,1,1,3,3,3,4,2,2,1,3]
let res = arr.filter((c,i,ar) => i == 0 || ar[i] !== ar[i-1])
console.log(res)

关于javascript - 如果数组的连续元素重复,则通过保留该值的一个实例来仅过滤掉该数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51292737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com