JS如何实现JSON去重?

例如有这样一个JSON,想要去掉重复项。
{"i1":"1231", "i2":"9387", "i3":"68433", "i4":"1231", "i5":"43566"}
i1和i4的值相等,重复了,如何去重呢?

阅读 8.2k
4 个回答

跟数组一样的

var _json = {"i1":"1231", "i2":"9387", "i3":"68433", "i4":"1231", "i5":"43566"};
var  newJson = {};
for(var key in _json){
  if(newJson[_json[key]]){
    delete _json[key];
  }else{
    newJson[_json[key]] = true;
  }
}
console.log(_json)

把key value交换 再交换回去 使用的基础知识是对象的key具有唯一性 不能重复
a={name:90,age:89,name:78}=>a={name:78,age:89}
a={
"i1": "1231",
"i2": "9387",
"i3": "68433",
"i4": "1231",
"i5": "43566"
};
//交换
var t={};
for(var i in a){
t[a[i]]=i;
};
// 再交换回去
var b={};
for(var i in t){
b[t[i]]=i;
}
//b={i4: "1231", i2: "9387", i5: "43566", i3: "68433"}

var obj = {"i1":"1231", "i2":"9387", "i3":"68433", "i4":"1231", "i5":"43566"}
var st = new Set()
Object.keys(obj).forEach(x => st.has(obj[x]) ? delete obj[x] : st.add(obj[x]))

console.log(obj) //{i1: "1231", i2: "9387", i3: "68433", i5: "43566"}

Set 是集合,里面的元素不可以重复,=>箭头函数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题