首页 > 解决方案 > 如何使用一个数组过滤对象数组并创建另一个数组?- Javascript

问题描述

这是我的代码

 var people = [
          {name:'Sam', age: 22},
          {name:'Pam', age: 24},
          {name:'Adam', age: 25},
          {name:'Sam', age: 26},
          {name:'Pam', age: 28},
          {name:'Pam', age: 26}
  ];

  var nameFilter = ['Sam', 'Pam'];

使用名字,我想得到相应的年龄

我应该将所有这些值作为年龄数组

[22,26,24,28,26]

我不想要独特的价值观。

使用 Vanilla JS 实现这一目标的最简单方法是什么。我不想使用 Lodash 或 Jquery

标签: javascriptarrays

解决方案


您可以使用Array.prototype.filter()

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

Array.prototype.includes()

includes()方法确定数组是否在其条目中包含某个值,并根据需要返回 true 或 false。

Array.prototype.map()

map()方法使用对调用数组中的每个元素调用提供的函数的结果创建一个新数组。

var people = [{name:'Sam', age: 22},
  {name:'Pam', age: 24},
  {name:'Adam', age: 25},
  {name:'Sam', age: 26},
  {name:'Pam', age: 28},
  {name:'Pam', age: 26}
];

var nameFilter = ['Sam', 'Pam'];
var res = people.filter(p => nameFilter.includes(p.name)).map(p => p.age)
console.log(res);


推荐阅读