相关文章
数组去重
一、使用Set对象
Set对象是ES6中的数据结构,它可以存储唯一的值,因此可以利用Set对象来实现数组去重。
1 2 3
| const array = [1, 2, 2, 3, 3, 4, 5]; const uniqueArray = [...new Set(array)]; console.log(uniqueArray); // [1, 2, 3, 4, 5]
|
二、使用filter方法
遍历数组,使用filter方法过滤出只包含唯一值的新数组。
1 2 3
| const array = [1, 2, 2, 3, 3, 4, 5]; const uniqueArray = array.filter((value, index, self) => self.indexOf(value) === index); console.log(uniqueArray); // [1, 2, 3, 4, 5]
|
self.indexOf(value) === index
表示当前元素在数组中的第一次出现的位置等于当前遍历的索引 index。
三、使用reduce方法
使用reduce方法遍历数组,构建一个新数组,只包含未出现过的元素。
1 2 3 4 5 6 7 8
| const array = [1, 2, 2, 3, 3, 4, 5]; const uniqueArray = array.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { accumulator.push(currentValue); } return accumulator; }, []); console.log(uniqueArray); // [1, 2, 3, 4, 5]
|
四、使用indexOf或includes方法和循环
遍历数组,使用indexOf或includes方法判断当前元素是否在新数组中,若不在则添加到新数组中。
1 2 3 4 5 6 7 8
| const array = [1, 2, 2, 3, 3, 4, 5]; const uniqueArray = []; for (let i = 0; i < array.length; i++) { if (uniqueArray.indexOf(array[i]) === -1) { uniqueArray.push(array[i]); } } console.log(uniqueArray); // [1, 2, 3, 4, 5]
|
五、使用对象属性
遍历数组,将数组元素作为对象的属性,利用对象属性的唯一性实现去重。
1 2 3 4 5
| const array = [1, 2, 2, 3, 3, 4, 5]; const obj = {}; array.forEach(item => obj[item] = item); const uniqueArray = Object.values(obj); console.log(uniqueArray); // [1, 2, 3, 4, 5]
|