根据属性过滤JSON数组

时间:2020-08-08 06:54:39

标签: javascript arrays

我有一个像这样的JSON数组:

var records = [
  { Name: "Bob", EmployeeID: 1234, Status: "present" },
  { Name: "Jim", EmployeeID: 4432, Status: "present" },
  { Name: "Heather", EmployeeID: 4432, Status: "absent" },
]

我想根据状态(即Status === "present")来过滤数组列表。

[
  { "Name": "Bob", "EmployeeID": 1234, "Status": "present" },
  { "Name": "Jim", "EmployeeID": 4432, "Status": "present" }
]

3 个答案:

答案 0 :(得分:1)

使用Array#filter仅获取present状态记录。

filter()方法创建一个新的array,其中所有通过测试的元素均由提供的功能实现。

var records = [{
    "Name": "Bob",
    "EmployeeID": 1234,
    "Status": "present"
  },
  {
    "Name": "Jim",
    "EmployeeID": 4432,
    "Status": "present"
  },
  {
    "Name": "Heather",
    "EmployeeID": 4432,
    "Status": "absent"
  }
];

let preStatus = records.filter(({Status}) => Status === 'present')
console.log(preStatus)

答案 1 :(得分:0)

您可以只使用filter方法。它会根据给定条件返回新数组。

var records = [{"Name":"Bob", "EmployeeID":1234, "Status":"present"},
               {"Name":"Jim", "EmployeeID":4432, "Status":"present"},
               {"Name":"Heather", "EmployeeID":4432, "Status":"absent"}];
               
               
               
const output = records.filter(rec => {
   return rec.Status == 'present';
});


console.log(output);

答案 2 :(得分:0)

我相信您提到的是过滤

  let recordSorted = []
    records.map(item => if(item.Status == "present"){
    recordSorted.push(item)
    })

2。您只需通过以下方式即可

records.map(item => item.Status === "present" ? recordSorted.push(item): continue )

3。您可以使用过滤器方法从数组中过滤itsm

var records = [
  { Name: "Bob", EmployeeID: 1234, Status: "present" },
  { Name: "Jim", EmployeeID: 4432, Status: "present" },
  { Name: "Heather", EmployeeID: 4432, Status: "absent" },
]

let recordSorted = records.filter(item=>{item.Status ==="present"})

详细了解filter

console.log(recordSorted)