开发者问题收集

TypeError:在过滤数组中对象的值时,obj[key].includes 不是一个函数

2017-01-12
7670

我想通过某个值过滤对象数组中的值。当我运行该函数时,我收到 TypeError: obj[key].includes 不是函数 。我正在使用 reactjs。我在函数中遗漏了什么?

var arr = [{
 name: 'xyz',
 grade: 'x'
}, {
 name: 'yaya',
 grade: 'x'
}, {
 name: 'x',
 frade: 'd'
}, {
  name: 'a',
  grade: 'b'
}];

filterIt(arr, searchKey) {
  return arr.filter(obj => Object.keys(obj)
    .map(key => obj[key].includes(searchKey)));
}

我从 https://stackoverflow.com/a/40890687/5256509 获得了此示例并尝试了它

1个回答

您无法像这样过滤对象数组,因为此组合

Object.keys(obj).map(key => obj[key].includes(searchKey))

始终提供一个数组(具有 truefalse 值),并且任何数组都是真值。因此过滤器不会过滤任何内容。您可以尝试以下方法:

arr.filter(obj => 
   Object.keys(obj)
     .some(key => obj[key].includes(searchKey))
);
dfsq
2017-01-12