如何通过特定键过滤javascript中的对象

use*_*r21 0 javascript json object filter

我在数组[0]中有以下对象:

   [
       {
        "startDay": "05-06",
        "endDay": "05-06",
        "startTime": "xxxx", 
        "eventType": "craft" 
    },
    {
        "startDay": "05-05",
        "endDay": "05-06",
        "startTime": "1400", 
        "eventType": "art" 
    },
    {
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1100", 
        "eventType": "music" 
    },
    {
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1400", 
        "eventType": "fishing" 
    },
    {
        "startDay": "05-07","endDay": "05-08",
        "startTime": "1400", 
        "eventType": "football" 
    }
]
Run Code Online (Sandbox Code Playgroud)

我如何通过item.startDay过滤它?例如,如果过滤器是"05-06",则过滤的将是:

[{
        "startDay": "05-06",
        "endDay": "05-06",
        "startTime": "xxxx", 
        "eventType": "craft" 
    }]
Run Code Online (Sandbox Code Playgroud)

如果过滤器是"05-08",则过滤的将是:

[{
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1100", 
        "eventType": "music" 
    },
    {
        "startDay": "05-08","endDay": "05-08",
        "startTime": "1400", 
        "eventType": "fishing" 
    }]
Run Code Online (Sandbox Code Playgroud)

Mih*_*nut 5

您可以使用filter方法并将回调提供的函数作为参数传递.

filter()方法创建一个新数组,其中包含所有传递由提供的函数实现的测试的元素.

let data = [ { "startDay": "05-06", "endDay": "05-06", "startTime": "xxxx", "eventType": "craft" }, { "startDay": "05-05", "endDay": "05-06", "startTime": "1400", "eventType": "art" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1100", "eventType": "music" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1400", "eventType": "fishing" }, { "startDay": "05-07","endDay": "05-08", "startTime": "1400", "eventType": "football" } ]

let startDay = "05-08";
data = data.filter(function(item){
  return item.startDay == startDay;
});
console.log(data);
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用arrow函数.

let data = [ { "startDay": "05-06", "endDay": "05-06", "startTime": "xxxx", "eventType": "craft" }, { "startDay": "05-05", "endDay": "05-06", "startTime": "1400", "eventType": "art" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1100", "eventType": "music" }, { "startDay": "05-08","endDay": "05-08", "startTime": "1400", "eventType": "fishing" }, { "startDay": "05-07","endDay": "05-08", "startTime": "1400", "eventType": "football" } ]

let startDayParam = "05-08";
data = data.filter(({startDay}) => startDay == startDayParam);
console.log(data);
Run Code Online (Sandbox Code Playgroud)