【问题标题】:Using find to filter array with two arguments使用 find 过滤具有两个参数的数组
【发布时间】:2019-09-23 14:18:07
【问题描述】:

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

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

我也尝试使用“过滤器”但同样的问题......

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';

有最好的方法吗?

【问题讨论】:

  • 数组和规则是什么样的?
  • 您的数组是否有可能在名称和编号上都没有与 rule 匹配的单个项目?
  • 对不起@Aron那个答案是错误的......这是正确的“规则”是我用来比较的对象这就是我的数组的样子:[ {number:0,名称:'jose'},{编号:2,名称:'maria'},]
  • 当然。但无论哪种方式,您的数组是否有可能没有一个项目与名称和数字中的规则匹配?
  • 不,如果我可以按名称和编号过滤,我只会找到一项,但问题是我的过滤器以及我试图在数组操作系统中查找对象的方式不起作用。 ..

标签: arrays typescript filter angular6


【解决方案1】:

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

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);

【讨论】:

  • 如果问题中的代码按预期工作,请将其关闭,因为没有 MCVE 或不再可重现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多