javascript - 按键值过滤对象
问题描述
我有一个对象数组可以说:
var ob=[
{
name:'john',
surname:'fox'
}, {
name:'jill',
surname:'hog'
}
];
我正在一个网站上实现搜索,我可以在其中输入姓名或姓氏,它应该通过包含输入值的对象过滤新数组。
因此,如果我的输入是“狐狸”,它将过滤掉包含键值“狐狸”的对象
我的简单想法是:
ob.filter(item=>{ return item.name.includes(searchterm) ||
item.surname.includes(searchterm)}
但我想有更好的方法,以防键名发生变化。
解决方案
You can loop over the keys of the inner object so that doing so you can use Array.some()
to get the match of the searched text. It will work for any number of keys of any name so you do not need to get depend on the keys name
and surname
.
var ob = [{
name: 'john',
surname: 'fox'
},
{
name: 'jill',
surname: 'hog'
}
];
var searchText = 'fox';
var res = ob.filter((item)=>{
return Object.keys(item).some((key)=>item[key].includes(searchText));
});
console.log(res);
推荐阅读
- php - 如何使用来自 API 的响应进入控制器 - CodeIgniter
- django - 使用 Django 构建第三方 API
- pylint - pylint3 变量名“fl”不符合snake_case 命名风格(无效名称)
- sql-server - 我可以添加到 DDL 触发器插入/更新的表值吗?
- javascript - Vue-test-utils:如何模拟 VueX 中动作的返回?
- flutter - xmlDocument.writeToFile('document.xml') 没有为 XmlDocument 类型定义
- python - 获取数据向网页的组合框和日期时间对象提交值
- html - 如何使 WordPress 大型菜单中的隐藏子菜单具有焦点
- java - 如何打开excel并转到特殊行
- r - 在数据框中使用两列的交集