lodash过滤名称

时间:2018-03-12 09:26:22

标签: javascript json lodash

我正在试图弄清楚如何使用lodash过滤以下对象:

contacts = {
  A: [
  { name: "Albert", age: 16 },
  { name: "Arthur", age: 24}
  ],
  B: [
  { name: "Bob", age: 33 }
  ],
  C: [],
  D: [],
...
};

我希望能够在保持相同结构的同时按名称(包含)过滤联系人,我不知道告诉lodash在第二层寻找任何对象。

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

使用mapfilter

var nameToSearch = "Bob";
contacts = Object.keys(contacts).map( s => contacts[s].filter( t => t.name == nameToSearch ) );

答案 1 :(得分:0)

试试这个

const contacts = {
  A: [
  { name: "Albert", age: 16 },
  { name: "Arthur", age: 24}
  ],
  B: [
  { name: "Bob", age: 33 },
  { name: "Ahn", age: 20 },
  ],
  C: [],
  D: []
};

const obj = {};
Object.keys(contacts).forEach(index => {
  obj[index] = contacts[index].filter(person =>
    person.name.includes("th"));
});
console.log(obj);