直接上代码
//对象数组去重
function arrayReSet(jsonArray) {
let json = jsonArray; //两个数组对象合并
let newJson = []; //盛放去重后数据的新数组
console.log(json)
for (let i = 0; i < json.length; i++) { //循环json数组对象的内容
let flag = true; //建立标记,判断数据是否重复,true为不重复
for (let j = 0; j < newJson.length; j++) { //循环新数组的内容
if (JSON.stringify(json[i]) === JSON.stringify(newJson[j])) { //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
flag = false;
}
}
if (flag) { //判断是否重复
newJson.push(json[i]); //不重复的放入新数组。 新数组的内容会继续进行上边的循环。
}
}
return newJson
}
测试:
var array=[
{a:1,b:2},
{a:1,b:2},
{a:1,b:2},
{a:1,b:2},
{a:1,b:2},
{a:123,b:2},
{a:1,b:2},
{a:234,b:2},
{a:123,b:2},
{a:234,b:2},
]
console.log(arrayReSet(array))
输出
0: {a: 1, b: 2}
1: {a: 123, b: 2}
2: {a: 234, b: 2}
优化
JSON.stringify(json[i]) == JSON.stringify(newJson[j])
其实使用 JSON.stringify 效率是非常低的, 最好在每个对象里面加一个 id ,判断的时候使用 id 判断即可 。
json[i].id == newJson[j].id
//对象数组去重
function arrayReSet(jsonArray) {
let json = jsonArray; //两个数组对象合并
let newJson = []; //盛放去重后数据的新数组
console.log(json)
for (let i = 0; i < json.length; i++) { //循环json数组对象的内容
let flag = true; //建立标记,判断数据是否重复,true为不重复
for (let j = 0; j < newJson.length; j++) { //循环新数组的内容
if (json[i].id === newJson[j].id) { //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
flag = false;
}
}
if (flag) { //判断是否重复
newJson.push(json[i]); //不重复的放入新数组。 新数组的内容会继续进行上边的循环。
}
}
return newJson
}