📅  最后修改于: 2023-12-03 15:31:43.860000             🧑  作者: Mango
当我们想要处理不同类型的数据时,数组是一个非常有用的数据结构。通常,我们会有一个数组里面有许多元素,我们想找到其中相同的元素。这个时候,我们可以使用Javascript提供的一些函数来实现。
filter()
函数可以用来过滤数组中的元素。这个函数接受一个函数作为参数,这个函数将被应用于数组的每一个元素。如果这个函数返回值是true
,那么这个元素就会被留下来。否则,它会被过滤掉。
const arr = [1, 2, 3, 4, 5, 5, 6, 7];
const filteredArr = arr.filter((item, index) => {
return arr.indexOf(item) === index; // 去重
})
console.log(filteredArr); // [1, 2, 3, 4, 5, 6, 7]
在上面的代码中,我们使用了filter()
函数来过滤掉重复的元素。我们传递给filter()
函数的函数会检查当前元素在数组中第一次出现的位置是否等于它的索引位置。如果等于,那么这个元素就会被留下来。否则,它就会被过滤掉。
reduce()
函数可以用来将数组中的元素合并成一个值。这个函数接受一个函数和一个可选的第二个参数作为参数。这个函数将被应用于数组的每一个元素。它会返回一个累加器的值和一个新的累加器的值。在最后一步,reduce()
返回整个累加器的最终值。
const arr = [1, 2, 3, 4, 5, 5, 6, 7];
const uniqueArr = arr.reduce((acc, cur) => {
if (!acc.includes(cur)) {
acc.push(cur);
}
return acc;
}, [])
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
在上面的代码中,我们使用了reduce()
函数来去重元素。我们传递给reduce()
函数的函数会检查当前元素是否已经在累加器中。如果没有,那么就把它添加到累加器中。最后,reduce()
返回整个累加器的值。
ES6提供了一个新的数据类型,叫做Set。Set是一种无序且不重复的集合,它非常适合用来去重数组。
const arr = [1, 2, 3, 4, 5, 5, 6, 7];
const set = new Set(arr);
const uniqueArr = Array.from(set);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
在上面的代码中,我们使用了Set来去重数组。我们首先创建一个Set,并将数组作为参数传递给Set的构造函数。这将创建一个包含所有不重复元素的Set。然后,我们使用Array.from()函数将Set转换回数组。
在本文中,我们介绍了三种用于找到数组中相同元素的方法:Array.filter()
,Array.reduce()
和Set。每种方法都有自己的优点,具体实现可以根据需要进行选择。