1.对数组进行排序,比较相邻元素是否相等。
const arr = ['111','22','33','111','44'];
const arr2 = arr.sort();
console.log(arr2);
for (let i = 0; i < arr2.length; i++) {
if (arr2[i] === arr2[i+1]) {
console.log('1.数组arr内容重复');
}
}
2.使用ES6中新增加的集合类型Set,Set是不包含重复值的列表。
const arr = ['111','22','33','111','44'];
const set = new Set(arr);
console.log(set);
if (set.size !== arr.length) {
console.log('2.数组arr内容重复');
}
3.使用indexOf()和lastIndexOf()判断。
const arr = ['111','22','33','111','44'];
function arrRepeat(arr){
const arrStr = JSON.stringify(arr);
for (let i = 0; i < arr.length; i++) {
if (arrStr.indexOf(arr[i]) !== arrStr.lastIndexOf(arr[i])) {
return true;
}
}
return false;
}
if (arrRepeat(arr)) {
console.log('3.数组arr内容重复');
}
4.使用match()正则的方法。
const arr = ['111','22','33','111','44'];
function arrRepeat2(arr){
let arrStr = JSON.stringify(arr);
console.log(arrStr);
for (let i = 0; i < arr.length; i++) {
if (arrStr.match(new RegExp(arr[i], 'g')).length > 1) {
return true;
}
}
return false;
}
if (arrRepeat2(arr)) {
console.log('4.数组arr内容重复');
}
5.转化为对象属性判断。
const arr = ['111','22','33','111','44'];
function arrRepeat3(arr) {
let hash = {};
for (let i of arr) {
if (hash[i]) {
return true;
}
hash[i] = true;
}
return false;
}
if (arrRepeat3(arr)) {
console.log('5.数组arr内容重复');
}