使用 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);
我正在尝试过滤传递两个参数的对象数组,但它不起作用...我的数组包含一个对象,该对象具有我传递给参数的值,但结果为空
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);