【问题标题】:Remove Duplicates from Json file using Javascript使用 Javascript 从 Json 文件中删除重复项
【发布时间】:2018-12-04 18:16:26
【问题描述】:

我有一个如下所示的 json 文件 (test.json)。我没有成功尝试解析测试数组并删除下面任何“名称”的重复项

      {
    "test": [{
            "name": "jeb",
            "occupation": "teacher"
        },

        {
            "name": "jeb",
            "occupation": "writer"
        },
        {
            "name": "bob",
            "occupation": "skydiver"
        }

    ]
}

到目前为止,我的代码如下:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var myObj = JSON.parse(this.responseText);
        var i;
        var test= myObj.test.length;

        for (i=0; i<=myObj.test.length; i++) {
          var name = myObj.test[i].name;
          var occupation = myObj.test[i].occupation;
          console.log(name + " and " + occupation)

        }
      }
}
xmlhttp.open("GET", "test.json", true);
xmlhttp.send();

然后打印出来:

jeb and teacher
jeb and writer
bob and skydiver

我希望最终结果是:

jeb and teacher, writer
bob and skydiver

感谢任何帮助。谢谢!

【问题讨论】:

    标签: javascript arrays json duplicates


    【解决方案1】:

    最好将reduce 放入一个由name 索引的对象中,其值是一个职业数组,然后一旦创建了该对象,就可以对其进行迭代并打印每个名称的职业:

    const obj = {
      "test": [{
        "name": "jeb",
        "occupation": "teacher"
      },{
        "name": "jeb",
        "occupation": "writer"
      },{
        "name": "bob",
        "occupation": "skydiver"
      }]
    };
    
    const namesByOccupation = obj.test.reduce((a, { name, occupation }) => {
      if (!a[name]) a[name] = [];
      a[name].push(occupation);
      return a;
    }, {});
    Object.entries(namesByOccupation).forEach(([name, occupations]) => {
      console.log(name + ' and ' + occupations.join(', '));
    });

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多