JavaScript数组怎么实现去重
李成白 2023-09-07编程经验
前言在开发中,经常会遇到需要对数组进行去重的场景。JavaScript提供了多种方法来实现数组去重,本文将介绍其中的几种常见方法,并分析其用途和规范。方法一:使用SetSet是ES6引入
前言
在开发中,经常会遇到需要对数组进行去重的场景。JavaScript提供了多种方法来实现数组去重,本文将介绍其中的几种常见方法,并分析其用途和规范。
方法一:使用Set
Set是ES6引入的新数据结构,用于存储唯一的值。通过将数组转换为Set,再将Set转换回数组,可实现去重操作。
function uniqArray(arr) { const set = new Set(arr); return Array.from(set); } const arr = [1, 2, 3, 3, 4, 5, 5]; const uniqArr = uniqArray(arr); console.log(uniqArr);
这段代码中,首先通过new Set(arr)将arr转换为Set,Set会自动去重。然后通过Array.from(set)将Set转换为数组,返回去重后的数组。该方法简洁高效,适用于大多数场景。
方法二:使用filter
使用Array的filter方法结合indexOf判断数组元素是否重复,从而实现数组去重。
function uniqArray(arr) { return arr.filter((item, index, self) => self.indexOf(item) === index); } const arr = [1, 2, 3, 3, 4, 5, 5]; const uniqArr = uniqArray(arr); console.log(uniqArr);
在这段代码中,使用filter方法遍历数组arr,对于每个元素,使用indexOf判断其第一次出现的位置index与当前位置index是否相等,如果相等则保留,否则过滤掉。返回的数组就是去重后的数组。该方法简单易懂,但对于大型数组效率较低。
方法三:使用reduce
使用Array的reduce方法和includes判断数组元素是否重复,从而实现数组去重。
function uniqArray(arr) { return arr.reduce((prev, cur) => { if (!prev.includes(cur)) { prev.push(cur); } return prev; }, []); } const arr = [1, 2, 3, 3, 4, 5, 5]; const uniqArr = uniqArray(arr); console.log(uniqArr);
这段代码中,使用reduce方法遍历数组arr,在每次迭代中判断prev数组中是否包含当前元素cur,如果不包含则将其添加到prev中。返回的prev即为去重后的数组。该方法代码简洁,效率较高。
总结
本文介绍了JavaScript数组去重的三种常见方法:使用Set、使用filter和indexOf、使用reduce和includes。这些方法各有优劣,选择合适的方法取决于实际的需求和数据规模。在开发中,去重是一个常见的操作,掌握这些方法能够提高代码的质量和性能。
很赞哦! ()