Javascript 【基础】对象数组去重

  • Post author:
  • Post category:java


直接上代码

//对象数组去重
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
	}