javascript - 如何使用一个数组过滤对象数组并创建另一个数组?- 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
解决方案
您可以使用Array.prototype.filter()
:
该
filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
该
includes()
方法确定数组是否在其条目中包含某个值,并根据需要返回 true 或 false。
该
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);
推荐阅读
- git - 如何告诉 git 在再次修改之前停止以 git status 显示文件?
- java - 如何使用 JMenuItem 失去焦点或关闭 JPopupMenu
- node.js - Selenium 自动化 - 悬停下拉菜单不起作用
- python-3.x - 如何使用 subprocess.run 安装程序
- postgresql - 在 postgresql 中使用模式的多租户的安全设置?
- wpf - 复合设计模式和 ListBox 选择
- javascript - Socket.io 客户端一次连接多个服务器
- excel - EXCEL VBA:根据值范围格式化现有数字单元格
- python - Pandas Resample Upsample 最后日期/数据边缘
- visual-studio-code - 有没有办法像在 Sublime Text 中一样修改每种语言的默认注释标签