基于过滤器数组的属性值

时间:2019-05-29 08:45:13

标签: javascript jquery arrays json parsing

我有一个包含13k对象的JSON文件。我只需要从中获取具有事件let data = [{name:"A",type:"AA",children:[{id:1,name:"Child-A",admin:["Y"]}],other:"NA"},{name:"B",type:"BB",children:[{id:2,name:"Child-B"}],other:"NA"},{name:"C",type:"CC",children:[{id:3,name:"Child-C"}],other:"NA"}]; let orderArray = [3, 1, 2]; data.sort((a,b) => orderArray.indexOf(a.children[0].id) - orderArray.indexOf(b.children[0].id)); console.log(data);属性的对象。事件是包含多个名称属性的对象数组。这是外观的屏幕截图:

{ name: "Submitted"}

这是我如何在json文件中获取所有对象的方法:

{
  "_id": "03c319a5-86d4-4ce6-ba19-1a50584cecb4",
  "_rev": "21-7cb67ebb46c485ff443995fc27bdd950",
  "doctype": "application",
  "events": [{
      "name": "change",
      "time": 1532547503182
    },
    {
      "name": "change",
      "time": 1532547503182
    },
    {
      "name": "submitted",
      "time": 1532547503182
    },
    {
      "name": "edited",
      "time": 1532547503182
    }
  ]
}

现在,我需要将进入$.getJSON("export.json", function(data) { var data = []; var arrays = data; var i; for (i = 0; i < arrays.length; i++) { console.log(arrays[i]); } }); 的{​​{1}}的所有对象推送到events[name:submitted]中。如何过滤结果?

2 个答案:

答案 0 :(得分:2)

您可以通过filter方法过滤对象数组。

$.getJSON("export.json", function(data) {
  var data = [];
  var arrays = data;

  var newArray = arrays.filter(function (el) {
    return el.name == 'Submitted';
  });

  console.log(newArray);
});

您也可以使用ES6 arrow function

一行
var newArray  = arrays.filter(el => el.name === 'Submitted')

答案 1 :(得分:1)

您可以使用filter(),检查events数组中的每个元素以查看name是否等于submitted

const object = {
  "_id": "03c319a5-86d4-4ce6-ba19-1a50584cecb4",
  "_rev": "21-7cb67ebb46c485ff443995fc27bdd950",
  "doctype": "application",
  "events": [{
      "name": "change",
      "time": 1532547503182
    },
    {
      "name": "change",
      "time": 1532547503182
    },
    {
      "name": "submitted",
      "time": 1532547503182
    },
    {
      "name": "edited",
      "time": 1532547503182
    }
  ]
}

const filtered  = object.events.filter(obj => obj.name === 'submitted')
console.log(filtered)