我们如何从对象数组中删除重复的子代值

时间:2018-10-26 04:48:03

标签: javascript arrays json object

te = [       {         “名称”:“巴拉”,         “ phone”:“无”       },       {         “名称”:“巴拉”,         “ phone”:“无”       },       {         “名称”:“巴拉”,         “ phone”:“无”       },       {         “名称”:“巴拉”,         “ phone”:“无”       }     ]

2 个答案:

答案 0 :(得分:0)

从对象数组中删除重复的子代值

 childrens = childrens.filter((children, index, self) =>
      index === self.findIndex((t) => (
        t.value === children.valuee
      ))
    )

答案 1 :(得分:0)

我假设您只是想遍历结构并找到不同级别的重复项。这不是最佳解决方案,但它可以工作:  检查JSON中的每个条目/节点

  • 遍历所有实体/节点,检查它们是否具有“值”字段

    • 如果它是唯一的实体/节点,则推送到数组以跟踪 唯一键。

    • 如果它不是唯一键,请继续遍历,但要顺便 返回将其删除。

函数delete似乎在已删除的实体/节点上放置了空值。 函数之后,我将JSON转换为字符串,然后删除所有"nulls,"",nulls,"

let json = yourJson;
let uniqueValues = [];
let jsonWithoutDuplicates = removeDuplicates(x);
jsonWithoutDuplicates = JSON.stringify(jsonWithoutDuplicates)
  .replace(/null,/g,'')
  .replace(/,null,/g,',');
console.log(jsonWithoutDuplicates) // you can convert it back to json if you want


function removeDuplicates(json) {
  for (var i in json) {
    if (json[i] !== null && typeof(json[i]) === "object") {
      let objValue = json[i].value;

      if(objValue){
        if(uniqueValues.indexOf(objValue) === -1){
          uniqueValues.push(objValue);
          removeDuplicates(json[i]);
        }else{
          removeDuplicates(json[i]);
          delete json[i]
        }
      }else{
        removeDuplicates(json[i]);
      }
    }
  }
  return json;
}

代码:https://playcode.io/141053 code