【问题标题】:How to filter array of map/key-pair如何过滤映射/密钥对数组
【发布时间】:2020-11-12 17:39:52
【问题描述】:
我想要21岁以上。
const people = [
{0: {name: 'john', age: 30}},
{1: {name: 'jay', age: 33}},
{2: {name: 'cris', age: 18}}
];
我尝试下面的代码,但它返回空结果
const result = people.filter(person => person.age >= 21);
console.log(result);
0,1,2是数组的索引
【问题讨论】:
标签:
javascript
arrays
typescript
google-cloud-firestore
【解决方案1】:
此解决方案仅在您的键 0, 1, 2.. 与索引相同时才有效。
如果您更改元素的顺序,则解决方案将不起作用。
const people = [
{0: {name: 'john', age: 30}},
{1: {name: 'jay', age: 33}},
{2: {name: 'cris', age: 18}}
];
people.filter((item, index) => item[index].age >= 21);
【解决方案2】:
0,1,2是数组的索引
我不认为它们是,我相信它们是对象的键试试这个
const people = [
{0: {name: 'john', age: 30}},
{1: {name: 'jay', age: 33}},
{2: {name: 'cris', age: 18}}
];
const result = people.filter(person =>Object.values(person)[0].age >= 21);
console.log(result);
或者像这样声明你的数组,你的代码应该可以工作
const people = [
{name: 'john', age: 30},
{name: 'jay', age: 33},
{name: 'cris', age: 18}
];
const result = people.filter(person => person.age >= 21);
console.log(result);
【解决方案3】:
它不会使用给定的索引初始化数组,它会创建具有0、1 等属性的单独对象。
像这样声明数组:
const people = [
{name: 'john', age: 30},
{name: 'jay', age: 33},
{name: 'cris', age: 18}
];