javascript - TypeError : obj[key]. 包括不是一个函数:在过滤器函数中

标签 javascript arrays object ecmascript-6 filter

我想找到具有某种值(value)的任何属性的对象。但我有错误: TypeError: obj[key].includes 不是函数。 如何解决?

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; }

关于javascript - TypeError : obj[key]. 包括不是一个函数:在过滤器函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55997331/

相关文章:

javascript - 在javascript中向数组元素添加属性

javascript - 将 Google 表格单元格发布到 HTML 页面

javascript - IndexedDb 有标准的命名约定吗?

使用 isNaN 和 !==0 的 Javascript 验证

java - 如何在这个二维数组中随机添加字母?

java - 以C++方式思考Java引用

javascript - 埃斯林特 : no-restricted-syntax for specific require function calls

javascript - 无法使用 forEach 和 map 将参数传递给函数数组

python - 根据相邻值替换二维数组中的值

javascript - 导出 javascript 对象以在另一个程序中使用它