使用 find 过滤带有两个参数的数组

Using find to filter array with two arguments

我正在尝试过滤传递两个参数的对象数组,但它不起作用...我的数组包含一个对象,该对象具有我传递给参数的值,但结果为空

const item = this.lista.find(i => i.number === rule.number &&  i.name === rule.name);

我也试过使用 "filter" 但同样的问题...

const item = this.lista.filter(i => i.number === rule.number).filter(i => 
 i.name === rule.name);

这是我的完整数组:

  this.lista= [
            {number: 0, name: 'jose'},
            {number: 2, name: 'maria'},
            {number: 3, name: 'martha'},
            {number: 4, name: 'ana'},
            {number: 4, name: 'petter'},
        ];

这是规则对象:

rule = new Rule();
rule.number = 4;
rule.name = 'ana';

有最好的方法吗?

我不确定您的代码中存在什么问题,但我已经复制了您的代码的一个简单示例,它按预期工作。

const rule = {};
rule.number = 4;
rule.name = 'ana';

const lista = [{
    number: 0,
    name: 'jose'
  },
  {
    number: 2,
    name: 'maria'
  },
  {
    number: 3,
    name: 'martha'
  },
  {
    number: 4,
    name: 'ana'
  },
  {
    number: 4,
    name: 'petter'
  },
];

const item = lista.find(i => i.number === rule.number && i.name === rule.name);

console.log(item);