1.es6的new Set()
用法:需要先把数组转成字符串,因为new Set()里面需要接收的是strings类型;
然后利用set成员值唯一的特性去重。
注意:这个可能会比较消耗性能。
const list1 =[" { name: '张三', age: 18, address: '北京' }"," { name: '张三', age: 18, address: '北京' }"]
console.log('去重',new Set(list1))//{" { name: '张三', age: 18, address: '北京' }"}
2.用for循环遍历每一项,然后用一个新数组接收它,再用inclueds判断是否存在当前数组中,
var arr1 = [];
for(let i=0;i<arr.length;i++){
if(!arr1.includes(arr[i])){
arr1.push(arr[i])
}
}
console.log(arr1)
3.用foreach映射
let newObj:{ [name: string]: boolean } = {};
let filterOps:Array<T> = [];
mergeList.forEach((item)=>{
if(!newObj[item.value]) {
filterOps.push(item);
newObj[item.value] = true;
}
4.reduce()
let arr = [1,1,2,3,4,5,5,6]
let arr2 = arr.reduce(function(ar,cur) {
if(!ar.includes(cur)) {
ar.push(cur)
}
return ar
},[])
5.filter()
// 这种方法会有一个问题:[1,'1']会被当做相同元素,最终输入[1]
let arr = [1,1,2,3,4,5,5,6]
let arr2 = arr.filter(function(item,index) {
// indexOf() 方法可返回某个指定的 字符串值 在字符串中首次出现的位置
return arr.indexOf(item) === index
})