这里是JS实现数组去重方法总结(六种方法)的完整攻略。
一、方法一:利用ES6 Set特性去重
利用ES6新特性Set(集合)的特性,可以很方便地去重。
实现方法如下:
let arr = [1, 2, 3, 4, 1];
let newArr = [...new Set(arr)];
console.log(newArr); // [1, 2, 3, 4]
使用Set的优点是代码简洁,不需要自己写去重方法,但是会改变原数组顺序。
二、方法二:利用ES6 Map特性去重
利用ES6新特性Map的特性,可以很方便地去重。
实现方法如下:
let arr = [1, 2, 3, 4, 1];
function unique(arr) {
const map = new Map();
return arr.filter(item => !map.has(item) && map.set(item, 1));
}
console.log(unique(arr)); // [1, 2, 3, 4]
使用Map的优点是可以保持原数组的顺序。
三、方法三:使用for循环去重
利用for循环逐一遍历数组,将不重复的元素放入新数组中。
实现方法如下:
let arr = [1, 2, 3, 4, 1];
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
console.log(newArr); // [1, 2, 3, 4]
此方法是常规的去重方法,使用for循环对数组逐个遍历,不建议用于大型数组去重,因为这样操作效率相对较低。
四、方法四:使用reduce去重
将数组中的每个元素逐个遍历,判断该元素是否在新数组中存在。若不存在,则在新数组中添加该元素。
实现方法如下:
let arr = [1, 2, 3, 4, 1];
let newArr = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(newArr); // [1, 2, 3, 4]
使用reduce可以充分利用数组本身的方法进行去重操作,代码简洁便于管理,适用于大型数组。
五、方法五:利用filter方法和indexOf方法去重
使用filter方法对每个元素进行遍历,返回新数组中不存在的元素。
实现方法如下:
let arr = [1, 2, 3, 4, 1];
let newArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(newArr); // [1, 2, 3, 4]
使用filter方法和indexOf方法的优点是代码简洁,但是对于大型数组操作效率相对较低。
六、方法六:利用对象属性去重
使用对象属性的方式可以将数组中的元素作为对象的属性,去重后返回对象的键名所组成的新数组。
实现方法如下:
let arr = [1, 2, 3, 4, 1];
let obj = {};
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
newArr.push(arr[i]);
obj[arr[i]] = 1;
}
}
console.log(newArr); // [1, 2, 3, 4]
使用对象属性的优点是操作效率高,但是返回的是新数组而非原数组。
以上六种方法各有特点,根据实际应用场景选择适合的方法可以大幅提高代码效率和可读性。
示例:
// 对数组去重操作并输出去重后的值
let arr = [1, 3, 2, 1, 2, 3];
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
console.log(newArr); // [1, 3, 2]
另一个示例:
// 操作方法:使用对象属性去重
let arr = [1, 3, 2, 1, 2, 3];
let obj = {};
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
newArr.push(arr[i]);
obj[arr[i]] = 1;
}
}
console.log(newArr); // [1, 3, 2]
以上示例中,第一个示例使用for循环遍历并去重数组,第二个示例使用对象属性去重。两个示例分别说明了使用两种不同的方法实现对数组去重,但都能较好地达到去重目的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现数组去重方法总结(六种方法) - Python技术站