Javascript array.filter 按子元素中的元素

2024-03-31

我有一个像这样的对象(客户端)数组:

"{"client_id":"AAA1","contracts":[{"contract_id":"CON1-AAA1","revisions":[{"date":"2018-07-30","status":"First Sign"}]}]}"

我可以按 client_id 进行过滤,没有问题:

var query = clients.filter(x => x.client_id == "AAA1");

但是,我想按修订日期或状态进行过滤,我测试了以下操作,但收到错误“未捕获类型错误:无法读取未定义的属性‘状态’”

var query = clients.filter(x => x.contracts.revisions.status == "First Sign");

有可能这样做还是我在妄想? :)


您可以通过组合使用来实现这一点Array#filter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter和两个Array#some https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some :

const clients = [{
  "client_id": "AAA1",
  "contracts": [{
    "contract_id": "CON1-AAA1",
    "revisions": [{
      "date": "2018-07-30",
      "status": "First Sign"
    }]
  }]
}, {
  "client_id": "AAA2",
  "contracts": [{
    "contract_id": "CON1-AAA2",
    "revisions": [{
      "date": "2018-08-30",
      "status": "Second Sign"
    }]
  }]
}];

let result = clients.filter(cl => cl.contracts.some(c => c.revisions.some(r => r.status == 'First Sign')));
console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript array.filter 按子元素中的元素 的相关文章

随机推荐