【问题标题】:!== working but === not working within function in typescript!== 工作但 === 不在打字稿中的函数内工作
【发布时间】:2022-11-27 04:20:03
【问题描述】:

为什么 === 不工作而 !== 在 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);

【问题讨论】:

    标签: javascript angular typescript


    【解决方案1】:

    通过逻辑。

    === 中,您要求过滤数组 a 以获取与 b 中的每个项目具有相同 id 属性的每个项目。因此,为了使这个看起来合理,数组b 中的每个项目都必须具有相同的id。由于数组 b 中的每一项都有不同的值,因此这将永远行不通。

    !== 中,您要求过滤数组 a 的每个项目在数组 b 中没有具有相同 id 属性的项目。因此,它会在数组 b 中找到没有匹配的 id 属性对的两项。

    如果这不是您正在寻找的逻辑,请使用您想要执行的操作更新问题,因为这里没有错误。

    以下是有关您使用的两种方法的一些文档:

    Array.filter()

    Array.every()

    【讨论】:

      【解决方案2】:

      解决方案

      对于满足您要求的第二个条件,您需要使用Array.some(),就像这样 -

      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.some(({ id: idc }) => idv === idc));
      console.log(r);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-09
        • 2013-08-11
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 2019-12-12
        • 2015-08-04
        相关资源
        最近更新 更多