JavaScript中json数组去重有很多种方法,比如:双重for循环去重、利用对象属性名不冲突去重,今天我们介绍一个json数组去重的最优方法。
使用set
使用set去重是利用了set不可重复的特性来实现,这个方法相对传统方式来说计算效率要高,所以如果浏览器支持,用set比较合适。
例1:
function unique(arr) { // set本身是具有无序,不能重复的特性 const set = new Set(arr); return [...set]; }
例2:
var arr = [5,6,7,3,25,6] var arr1 = Array.from(new Set(arr)) console.log(arr1)//完成去重
json格式就是数组的对象和互相嵌套构成的一种复杂数据结构,json本身可以是数组也可以是对象。
补充:对象的属性名引号是可加可不加的,但json数据很多时候会用于前后端交互。
如果json数据运用于前后端交互的时候,对象的属性名必须要加双引号。
我们再来看一个例子,用除Set之外的方法json数组去除重复。
例:
var arr = [ { ‘name’ : ‘小明’ “age” : 17}, {name : ‘xiao’ , age :10}] var preson = {“name” : ‘cxk’ “likes” : [“唱”,“跳”,“rap”] }
双重for循环,只留下不重复的
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- - //删完之后j-1抵消for里面的j++确保不跳过重复的值 } } }
利用对象属性名不冲突
可以把数字作为对象的属性名
例: var obj = {4:‘lisi’}
遍历数组,判断当前数组元素作为对象属性名是否能取到值
如果取不到,说明这是第一次遍历到当前值,就把当前元素作为对象属性名赋值。
如果取到了,说明之前已经赋值过了,也就是说当前值不是第一次出现。
例:
var arr = [4,2,4,5,6,6,74,1] var obj = {} var arr1 = [] arr.forEach(function (item){ //把item作为属性名到对象里去取值看能否取到 if(obj[item]){ //取到值了,说明item不是第一次出现,说明item是一个无效值,就不用push到arr1里面 }else{ //取不到值,说明item是第一次出现,就给他赋值,赋个有意义的值。 //item是第一次出现,他是我们要保留的值 obj[item] = ‘a’ arr.push(item)} }
通过以上内容我们知道了JavaScript中json数组去重的最优方式方法?感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!