如何解决array.filter和array.some对'||'的作用不理想健康状况
这是一个可行的示例(here是您可以玩的东西的链接):
var idDateArray = [
{
id: '1',updateTime: '00:00:00.000Z',updateDate: '2019-01-01'
},{
id: '2',updateDate: '2021-01-01'
},{
id: '3',{
id: '4',{
id: '5',updateDate: '2020-01-01'
}
]
var itemArray = [
{
updateDate: '2020-01-01',id: '4'
},{
updateDate: '2020-01-02',id: '2'
},{
updateDate: '2021-01-02',id: '3'
},{
updateDate: '2020-01-01',id: '1'
}
]
var filteredArray = idDateArray.filter((row) =>
itemArray.some(
(item) =>
//item.id !== row.id || // <-LINE IN QUESTION
(item.id === row.id &&
Date.parse(row.updateDate + 'T' + row.updateTime) >
Date.parse(item.updateDate + 'T' + item.updateTime)),),);
console.log(filteredArray);
我不明白的是为什么这种||
条件不能按我预期的那样工作?在上面的示例中,当删除了LINE IN QUESTION时,idDateArray
中id
与itemArray
中的对象匹配且日期/时间与>
中的所有对象均为{{1 }}应该被删除。它们就是(剩下的全部是id 2。)
然后我添加或条件,然后我希望它不仅可以过滤匹配ID且大于日期时间的值,还可以过滤那些与ID不匹配的值。即如果任一条件成立,则从itemArray
中删除。
解决方法
我的意思是,您是说“如果数组item.id !== row.id
中有任何个项目,请保留它”,并且大概总是至少有一个项目,其中id不匹配,您使用的是.some
而不是.every
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。