gpt4 book ai didi

javascript - 使用 lodash 从与内部值匹配的对象数组和日期数组中获取对象

转载 作者:行者123 更新时间:2023-11-28 03:24:58 25 4
gpt4 key购买 nike

我有一个具有这种结构的对象数组

let events = [ {
"initDate": "2019-11-20",
"finalDate": "2019-11-22",
"intermediateDates": [
"2019-11-20",
"2019-11-21"
],
"priority": 1
},....]

因此,我试图获取与给定日期数组匹配的对象,例如:

let filteredDays = [
"2019-11-20",
"2019-11-21",
"2019-11-22"
]

我正在尝试像这样使用lodash:

let eventsFound= [];
let intersection = _.map( this.events,function(value){
let inter = _.intersection(value.intermediateDates,filteredDates);
console.log(inter);
if(inter != []){
foundEvents.push(value);
return value;
}else{
return false;
}
});

当我控制台登录inter时,我得到第一个带有值的数组,然后下一个数组为空,但它不断将所有事件插入foundEvents数组,并且返回的数组与事件数组相同。

最佳答案

  1. 您正在使用 != 比较两个数组。在 javascript 中 [] != [] 始终为 true。要检查数组是否为空,请使用 length 属性,例如 arr.length == 0
  2. 使用 filter 而不是像 forEach 那样使用 map
  3. 要检查是否存在,请使用 some/includes 组合,而不是寻找交集。

因此,过滤其一些 intermediateDates 包含在 filteredDates 中的事件:

let eventsFound = _.filter(this.events, event =>
_.some(event.intermediateDates, date =>
_.includes(filteredDates, date)
)
);

使用 native 函数相同:

let eventsFound = this.events.filter(event =>
event.intermediateDates.some(date =>
filteredDates.includes(date)
)
);

关于javascript - 使用 lodash 从与内部值匹配的对象数组和日期数组中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58739642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com