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、具体代码如下所示:<!DOC哌囿亡噱TYPE 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> <hea颊俄岿髭d> <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、测试同上所示。