数组、字符串去重
要点:
Set
- 对象属性不能重复
Object.keys()
- 常规方法
Set
- Set.add()
// 能区分 1 和 '1'
function removeDuplicate(arr) {
let set = new Set();
arr.map((item) => {
set.add(item);
})
return [...set]
}
let arr = [1,1,'1',2,2,'2',3,3,'3'];
console.log(removeDuplicate(arr)) // [ 1, '1', 2, '2', 3, '3' ]
- 扩展运算符
function removeDuplicate(arr) {
return [...new Set(arr)]
}
let arr = [1,1,'1',2,2,'2',3,3,'3'];
console.log(removeDuplicate(arr)) // [ 1, '1', 2, '2', 3, '3' ]
Object.keys()
function removeDuplicate(arr) {
let obj = {};
arr.map((item) => {
obj[item] = 1;
})
return Object.keys(obj);
}
let arr = [1,1,'1',2,2,'2',3,3,'3'];
console.log(removeDuplicate(arr)) // [ '1', '2', '3' ]
常规方法
// indexOf() 不能判断NaN
// [NaN].indexOf(NaN) // -1
function Array_removeDuplicate(arr) {
var newArr = [];
arr.forEach((item) => {
if(arr.indexOf(item) !== -1) {
newArr.push(item);
}
})
return newArr;
}
Array_removeDuplicate([NaN,null,undefined,1,'1','2']) // [null, undefined, 1, "1", "2"]
// es6 Array.includes(),缺点:兼容性不好
function Array_removeDuplicate(arr) {
let newArr = [];
arr.forEach((item) => {
if(!newArr.includes(item)) {
newArr.push(item);
}
})
return newArr;
}
Array_removeDuplicate([NaN,null,undefined,1,'1',true,false]) // [NaN, null, undefined, 1, "1", true, false]
字符串去重
字符串先转换为数组
function removeDuplicate(string) {
return [...new Set(string.split(''))].join('')
}
let string = '112aA23344556';
console.log(removeDuplicate(string)) // "12aA3456"
参考: