方法一:ES6中的set()方法,去重后的到的是个obj,只适合简单数组去重
let arr=[1,2,3,4,5,2,1,2,2]
console.log(new Set(arr))
//{1, 2, 3, 4, 5}
方法二:双重for循环
let arr=[1,2,3,4,5,2,1,2,2]
for(var i = 0; i < arr.length-1; i++){
for(var j = i+1; j < arr.length; j++){
if(arr[i]===arr[j]){
arr.splice(j,1);
j--;
}
}
}
console.log(arr)
//[1, 2, 3, 4, 5]
方法三:ES6中的Map数据结构。类似于对象,即键值对的集合,可用于json数组去重
let arr=[1,2,3,2,3,4,5]
let map = new Map()
for (let item of arr) {
if (!map.has(item)) {
map.set(item)
}
}
arr=[...map.keys()]
console.log(arr,map)
// [1, 2, 3, 4, 5]
json数组去重
let arrObj=[
{id:1,name:'玄策'},
{id:2,name:'李白'},
{id:4,name:'韩信'},
{id:4,name:'韩信'},
{id:1,name:'玄策'},
{id:3,name:'赵云'},
]
let map = new Map()
for (let item of arrObj) {
if (!map.has(item.id)) {
map.set(item.id,item)
}
}
arr=[...map.values()]
console.log(arr)
打印出的map
翻以前写的代码,两个数组,a数组的数据要包含在b数组中,挺简洁的,记录下来,以后说不定可以用到
let arr=[
{id:1,name:'玄策'},
{id:2,name:'李白'},
{id:4,name:'韩信'},
{id:3,name:'赵云'},
]
let arr1=[
{id:4,name:'韩信'},
{id:3,name:'赵云'},
]
var a1=arr.filter(v=>{
return !arr1.some(j=>(j.id==v.id))
})
console.log(a1)
暂时这些,以后有时间补充