js对象数组去重的方法
1、第一种:借助于函数reduce实现某个属性的去重。
1、代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>json对象数组去重</title>
</head>
<body>
</body>
<script type="text/javascript">
var arrays = [
{"id":1,"name":"李四1"},
{"id":2,"name":"李四"},
{"id":2,"name":"李四"},
{"id":1,"name":"李四1"},
{"id":5,"name":"李四5"},
];
//第一种去重,根据某一个属性是否重复
var obj = {};
arrays = arrays.reduce(function(item, next) {
obj[next.id] ? '' : obj[next.id] = true && item.push(next);
return item;
}, []);
//将内容输出到浏览器控制台
for(var i =0; i<arrays.length; i++){
console.log(arrays[i])
}
</script>
</html>
2、开发谷歌浏览器测试结果如下。
实现根据id去重。


2、第二种:借助于for循环实现某个属性的去重。
1、具体代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>json对象数组去重for</title>
</head>
<body>
</body>
<script type="text/javascript">
var arrays = [
{"id":1,"name":"李四1"},
{"id":2,"name":"李四"},
{"id":2,"name":"李四"},
{"id":1,"name":"李四1"},
{"id":5,"name":"李四5"},
];
//第一种去重,根据某一个属性是否重复
var result = [];
var obj = {};
for(var i =0; i<arrays.length; i++){
if(!obj[arrays[i].id]){
result.push(arrays[i]);
obj[arrays[i].id] = true;
}
}
//将内容输出到浏览器控制台
for(var i =0; i<result.length; i++){
console.log(result[i])
}
</script>
</html>
2、打开各个浏览器测试结果同上。

3、第三种:借助于for实现所有属性值相同的情况下去重。
1、具体代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>json对象(对象的所有属性相同才能认为相同)数组去重for</title>
</head>
<body>
</body>
<script type="text/javascript">
var arrays = [
{"id":1,"name":"李四1"},
{"id":2,"name":"李四1"},
{"id":2,"name":"李四"},
{"id":1,"name":"李四1"},
{"id":5,"name":"李四5"},
];
//对象的所有属性相同才能认为相同
var result = [];
var obj = [];
var str;
for(var i =0; i<arrays.length; i++){
str = JSON.stringify(arrays[i]);
if(obj.indexOf(str) == -1){
result.push(arrays[i]);
obj.push(str);
}
}
//将内容输出到浏览器控制台
for(var i =0; i<result.length; i++){
console.log(result[i])
}
</script>
</html>
2、开发谷歌浏览器测试结果如下。
实现根据id+name+...去重。


4、第四种:
1、具体代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>json对象(对象的所有属性相同才能认为相同)reduce</title>
</head>
<body>
</body>
<script type="text/javascript">
var arrays = [
{"id":1,"name":"李四1"},
{"id":2,"name":"李四1"},
{"id":2,"name":"李四"},
{"id":1,"name":"李四1"},
{"id":5,"name":"李四5"},
];
//对象的所有属性相同才能认为相同
var obj = [];
var str;
arrays = arrays.reduce(function(item, next) {
str = JSON.stringify(next);
obj.indexOf(str) == -1 ? item.push(next) && obj.push(str) : '' ;
return item;
}, []);
//将内容输出到浏览器控制台
for(var i =0; i<arrays.length; i++){
console.log(arrays[i])
}
</script>
</html>
2、测试同上所示。

1、第一种:借助于reduce函数实现去重。
1、具体代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>二维数组去重reduce</title>
</head>
<body>
</body>
<script type="text/javascript">
var arrays = [
["id1","name李四1"],
["id2","name李四1"],
["id2","name李四"],
["id1","name李四1"],
["id5","name李四5"]
];
//对象的所有属性相同才能认为相同
var obj = [];
var str;
arrays = arrays.reduce(function(item, next) {
str = next.toString();
obj.indexOf(str) == -1 ? item.push(next) && obj.push(str) : '' ;
return item;
}, []);
//将内容输出到浏览器控制台
for(var i =0; i<arrays.length; i++){
console.log(arrays[i].toString())
}
</script>
</html>
2、开发谷歌浏览器测试结果如下。
实现二维数组元素全部相同去重。


2、其它情况可以参考json数组的去重逻辑