从数组中删除重复的值
有多种方法可以从数组中过滤掉重复项并仅返回唯一值。
1️⃣ 使用 Set 🔥
Set 是什么?
Set 是 ES6 中引入的新数据对象。Set 是唯一值的集合。
这里,
- 数组将转换为
Set
并且所有重复元素将被自动删除。 - 扩展语法
...
用于将所有元素包含Set
到一个新数组中。
const arr = ["🌼", "🌴", "🌹", "🌵", "🍄", "🌹", "🌴"];
const filteredArr = [...new Set(arr)];
console.log(filteredArr); //["🌼", "🌴", "🌹", "🌵", "🍄"]
使用以下方法将集合转换为数组Array.from
您还可以使用Array.from
将转换Set
为数组:
const arr = ["🌼", "🌴", "🌹", "🌵", "🍄", "🌹", "🌴"];
const filteredArr = Array.from(new Set(arr));
console.log(filteredArr); //["🌼", "🌴", "🌹", "🌵", "🍄"]
2️⃣ 使用过滤器🕸
如果元素通过并返回 true,它将被包含在过滤后的数组中,而任何失败或返回 false 的元素将不会包含在过滤后的数组中。
const arr = ["🌼", "🌴", "🌹", "🌵", "🍄", "🌹", "🌴"];
const filteredArr = arr.filter((item, index) => {
return arr.indexOf(item) === index;
})
console.log(filteredArr); //["🌼", "🌴", "🌹", "🌵", "🍄"]
3️⃣ 使用 forEach 方法🚀
使用forEach
,您可以遍历数组中的元素,如果数组中不存在该元素,则将其推送到新数组中。
const arr = ["🌼", "🌴", "🌹", "🌵", "🍄", "🌹", "🌴"];
const filteredArr = (arr) => {
let uniqueVal = [];
arr.forEach(el => {
if(!uniqueVal.includes(el)) {
uniqueVal.push(el);
}
})
return uniqueVal;
}
console.log(filteredArr(arr)); //["🌼", "🌴", "🌹", "🌵", "🍄"]
4️⃣ 使用 Reduce 方法😎
该reduce
方法用于减少数组的元素,并根据您传递的某些reducer函数将它们组合成最终数组。
const arr = ["🌼", "🌴", "🌹", "🌵", "🍄", "🌹", "🌴"];
const filteredArr = arr.reduce((acc, curr) => {
return acc.includes(curr) ? acc : [...acc, curr];
}, [])
console.log(filteredArr(arr)); //["🌼", "🌴", "🌹", "🌵", "🍄"]
5️⃣ 数组原型的独特方法📔
在 Javascript 中,数组原型构造函数允许您向 Array 对象添加新属性和方法。
const arr = ["🌼", "🌴", "🌹", "🌵", "🍄", "🌹", "🌴"];
Array.prototype.filteredArr = function (){
let arr = [];
for(let i = 0; i < this.length; i++) {
let current = this[i];
if(arr.indexOf(current) < 0 ) arr.push(current);
}
return arr;
}
console.log(arr.filteredArr()); //["🌼", "🌴", "🌹", "🌵", "🍄"]