带有多个条件的typescript/javascript array.filter()未返回预期值

带有多个条件的typescript/javascript array.filter()未返回预期值,javascript,arrays,typescript,filter,Javascript,Arrays,Typescript,Filter,我有两个属性的单元格定义: class Cell { x: number; y: number; constructor(x: number, y: number) { this.x = x; this.y = y; } } 让我们创建包含一些单元格的新数组: let x : Cell[]=[new Cell(5,5),new Cell(5,9), new Cell(5,56)] 我想筛选一个单元格(如果数组中存在,则返回数组的其余部分): 我希望返回最后两

我有两个属性的单元格定义:

class Cell {
  x: number;
  y: number;

  constructor(x: number, y: number) {
    this.x = x;
    this.y = y;
  }
}
让我们创建包含一些单元格的新数组:

let x : Cell[]=[new Cell(5,5),new Cell(5,9), new Cell(5,56)]
我想筛选一个单元格(如果数组中存在,则返回数组的其余部分):


我希望返回最后两个单元格的数组,但它不返回任何单元格。如果只使用一个条件,它就可以正常工作。有多种情况的解决方案吗?

你的问题有点让人困惑,我是根据我的假设写这篇文章的

您希望返回最后两个单元格,但该条件是矛盾的,因为最后两个单元格的x值为5,因此您可以检查此条件以返回最后两个单元格

x= x.filter(c=>(c.x == 5 && c.y > 5))
在第二种情况下,我使用大于运算符来获得所需的结果


如果您发现此错误,请告诉我,我将提供帮助。

您的逻辑错误。为了匹配您使用的
单元格(5,5)

c => c.x === 5 && c.y === 5
但要过滤掉它,请使用负片:

c => !(c.x === 5 && c.y === 5)
这和

c => c.x !== 5 || c.y !== 5

没有一个细胞符合你的条件,不清楚你为什么认为你会得到最后两个。是的,我发现有逻辑错误。这就是我想要实现的。Thnx!
c => c.x !== 5 || c.y !== 5