我在数组[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"
}
]
如何通过 item.startDay 过滤此内容?例如如果过滤器是“05-06”,则过滤的将是:
[{
"startDay": "05-06",
"endDay": "05-06",
"startTime": "xxxx",
"eventType": "craft"
}]
如果过滤器为“05-08”,则过滤后的内容为:
[{
"startDay": "05-08","endDay": "05-08",
"startTime": "1100",
"eventType": "music"
},
{
"startDay": "05-08","endDay": "05-08",
"startTime": "1400",
"eventType": "fishing"
}]
答案 0 :(得分:6)
您可以使用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);
另一种方法是使用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);
答案 1 :(得分:1)
您可以像这样使用.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"}],
match = '05-08';
let result = data.filter(({ startDay }) => startDay == match);
console.log(result);

答案 2 :(得分:1)
您可以使用filter方法:
const array = [{
"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"
}
];
const elementsWith0508 = array.filter(element => element.startDay === '05-08');
console.log(elementsWith0508);
答案 3 :(得分:1)
你可以这样做:
const filteredArray = array[0].filter((value) => {
return value.startDay == "05-06"
})
filter函数内部的返回返回匹配条件的每个对象,并用它构建一个新数组。
希望它有所帮助!