过滤基于数组的属性值[重复]

问题描述 投票:0回答:2

我有一个包含 13k 对象的 JSON 文件。我只需要从中获取具有 events

{ name: "Submitted"}
属性的对象。 events 是包含多个名称属性的对象数组。这是它的外观的屏幕截图:

{
  "_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
    }
  ]
}

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

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

  var i;
  for (i = 0; i < arrays.length; i++) {
    console.log(arrays[i]);
  }
});

现在我需要将所有具有

events[name:submitted]
的对象推入
arrays[i]
doc[]
中。如何过滤结果?

javascript jquery arrays json parsing
2个回答
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
投票

您可以使用

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)

© www.soinside.com 2019 - 2024. All rights reserved.