首先,该笔记内容是将网上查阅的资料做了一个整合,便于自己快速查阅并解决问题。
方法一:先利用ES6语法将数组去重,之后再与原数组比较长度,若长度小于原数组,则说明数组有重复值。
Array.from(new Set(arr)).length < arr.length
//ES6去重方法
// 1. 拓展运算符 + new Set方法
let arr1 = [...new Set(arr)]
// 2. Array.from + new Set方法
let arr2 = Array.from(new Set(arr))
// 3. new Map() + filter方法
let myMap = new Map()
let arr3 = arr.filter(item => {
return !myMap.has(item) && mayMap.set(item, 1)
})
方法二:先将数组转换成字符串,再遍历数组,在字符串中移除当前的数组元素之后还能找到该元素,则说明数组有重复值。(感谢评论区“浮生倒影”的抓虫纠正,现已优化代码)
var str = "," + arr.join(",,") + ",";
for(let i=0; i<arr.length; i++){
if(str.replace("," + arr[i]+",", "").indexOf("," + arr[i]+",") > -1){
alert("数组中重复元素是:" + arr[i]);
break
}
}
方法三:对数组进行排序,对比上一个元素和下一个元素是否相等,若相等,则说明数组有重复值。
var sarr = arr.sort();
for(let i=0; i<sarr.length; i++){
if(sarr[i] == sarr[i+1]){
alert("数组中重复元素是:" + sarr[i])
}
}