javascript - 如何在javascript中过滤数组中的多个值
问题描述
我有一个 json 元素数组。我想根据特定值过滤数组。下面是数组。
var arr = [
{name: bobby, id: 1, age: 23},
{name: charls, id: 2, age: 28},
{name: indi, id: 3, age: 23},
{name: charlie, id: 4, age: 25}]
从上面的数组中,我只想过滤名称为 bobby && indi 的员工。我试过下面的代码。
var filteredArray;
for (var i =0 ; i < arr.length; i++){
if(arr[i].name === 'bobby' || arr[i].name === 'indi'){
filteredArray.push(arr[i]);
}
}
但是通过上面的代码,我需要多次提及 OR(||) 条件,并且这些名称的数量可能会发生变化,例如 1 次我只想要有 Bobby 名字的员工,而其他时候我想要 Bobby、Indi 和 Charlie。有没有办法让它动态化。如果是,请告诉我。提前致谢。
解决方案
您可以将需要过滤的名称存储在数组中,然后检查名称是否存在于数组中
例如。
var arr = [
{name: "bobby", id: 1, age: 23},
{name: "charls", id: 2, age: 28},
{name: "indi", id: 3, age: 23},
{name: "charlie", id: 4, age: 25}
]
const names = ["bobby", "indi"];
const filtered = arr.filter((item)=>{
return names.includes(item.name)
});
console.log(filtered)
对于较旧的(例如 IE11)浏览器 -
var arr = [
{name: "bobby", id: 1, age: 23},
{name: "charls", id: 2, age: 28},
{name: "indi", id: 3, age: 23},
{name: "charlie", id: 4, age: 25}
]
const names = ["bobby", "indi"];
const filtered = [];
for(var i =0; i<arr.length - 1; i++){
if(names.indexOf(arr[i].name) > -1){
filtered.push(arr[i])
}
}
console.log(filtered)
推荐阅读
- java - Spring SingleConnectionDataSource 连接池问题
- python - 熊猫选择没有重复的行
- dart - 计算通过点 P 的正交是否与由其端点定义的线段相交
- php - 仅获取 WooCommerce 产品的一个产品类别术语
- python - 使用 map 和 lambda 加入 BeautifulSoup Contents
- laravel - PhpStorm 显示“属性值未关闭”错误
- python - 使用子进程在 unix 可执行文件中执行菜单选项
- java - PDFBox unicode 字体问题 - 在 Java 中使用 PDFbox 生成的 PDF 中的 Bangla unicode 字体被破坏
- gnuradio - 在取消 CMake 生成“gr-ais”时找不到模块“mpir”
- r - 当我包含特定变量时,psych::alpha 将不会运行