为什么===
不工作,而!==
在typescript中的函数内工作?
const a = [
{id: 4, name: 'Greg'},
{id: 1, name: 'David'},
{id: 2, name: 'John'},
{id: 3, name: 'Matt'},
];
const b = [
{id: 5, name: 'Mathew', position: '1'},
{id: 6, name: 'Gracia', position: '2'},
{id: 2, name: 'John', position: '2'},
{id: 3, name: 'Matt', position: '2'},
];
const s = a.filter(({ id: idv }) => b.every(({ id: idc }) => idv !== idc));
console.log(s);
const r = a.filter(({ id: idv }) => b.every(({ id: idc }) => idv === idc));
console.log(r);
2条答案
按热度按时间e3bfsja21#
解决方案
对于满足您要求的第二个条件,您需要使用Array.some(),如下所示-
hof1towb2#
逐步执行逻辑。
在
===
中,你要求对数组a
中的每一项进行过滤,以找出与b
中的每一项具有相同id
属性的项。因此,为了使这一操作合理,数组b
中的每一项都必须具有相同的id
。由于数组b
中的每一项都具有不同的值,因此这是行不通的。在
!==
中,您要求对数组a
中的每个项进行筛选,以查找在数组b
中没有具有相同id
属性的项。因此,它将在数组b
中找到两个没有匹配id
属性对的项。如果这不是您要寻找的逻辑,请使用您要执行的操作更新问题,因为此处没有错误。
以下是有关您正在使用的两种方法的一些文档:
Array.filter()
Array.every()