javascript - TypeError: obj[key].includes 不是函数:在过滤器函数中
问题描述
我想找到具有某些价值的任何属性的对象。但我有错误:TypeError: obj[key].includes is not a function。如何解决?
var aa = [{id: 1,type: 1,status: 1,name: 'txt'},{id: 2,type: 1,status: 1,name: 'txt'},{id: 3,type: 0,status: 0,name: 'txt'}];
function filterIt(arr, searchKey) {
return arr.filter(function(obj) {
return Object.keys(obj).some(function(key) {
return obj[key].includes(searchKey);
})
});
}
filterIt(aa, 'txt');
解决方案
尝试Object.values
改用:
var aa = [{id: 1,type: 1,status: 1,name: 'txt'},{id: 2,type: 1,status: 1,name: 'txt'},{id: 3,type: 0,status: 0,name: 'txt'}];
function filterIt(arr, searchKey) {
return arr.filter(function(obj) {
return Object.values(obj).includes(searchKey);
});
}
console.log(filterIt(aa, 'txt'));
.as-console-wrapper { max-height: 100% !important; top: auto; }
您还可以使此代码更紧凑:
var aa = [{id: 1,type: 1,status: 1,name: 'txt'},{id: 2,type: 1,status: 1,name: 'txt'},{id: 3,type: 0,status: 0,name: 'txt'}];
const filterIt = (arr, searchKey) => arr.filter(obj => Object.values(obj).includes(searchKey));
console.log(filterIt(aa, 'txt'));
.as-console-wrapper { max-height: 100% !important; top: auto; }
推荐阅读
- ruby - 罗马到整数重构
- javascript - 为什么 Array.prototype.includes(searchElement) 的参数需要与数组元素相同的类型?
- mysql - MySQL Entity Framework 不保存数据
- javascript - appendTo后如何让一个div飞到另一个div
- swift - 滚动到 WKWebView 的底部,macOS?
- javascript - 如何在 Angular 6 中格式化日期?
- angular - JSONP 调用成功,但出现错误:JSONP 注入脚本未调用回调
- python - 如何对 1000 个独特的时间序列数据进行数据探索?
- amazon-web-services - 如何在 AWS Lambda 中正确创建身份验证中间件
- c++ - GTest:使用 std::function 参数化测试时的 Valgrind 警告