Javascript 以下filterBy函数返回空数组,而不考虑筛选键

Javascript 以下filterBy函数返回空数组,而不考虑筛选键,javascript,filter,Javascript,Filter,我正在创建一个filterBy函数,该函数通过filterKey进行过滤: filterBy (data, filterKey) { data = data.filter(function (row) { return Object.keys(row).some(function (key) { return String(row[key]).toLowerCase().indexOf(filterKey) > -1 }) }) console.lo

我正在创建一个
filterBy
函数,该函数通过
filterKey
进行过滤:

filterBy (data, filterKey) {
  data = data.filter(function (row) {
    return Object.keys(row).some(function (key) {
      return String(row[key]).toLowerCase().indexOf(filterKey) > -1
    })
  })
  console.log(data)
  return data
}
数据
看起来像:
[{name:'Alex',createdAt:'},{…}]

filter
看起来像:
A
(一个字符串)

但是,
console
记录一个空数组,而不管
filter
的值是什么:
[]

我的过滤功能有什么问题


编辑:我想我找到了问题。如何修改函数,使其按
name
进行搜索?

看起来像
某些
函数正在使用
到小写
,但您作为示例使用的过滤器是
A
(大写A)。如果您将过滤器更改为
a
,您将得到一个结果

基本上,您提供了一个大写过滤器,但只搜索小写字母

var filterBy=函数(数据,filterKey){
var data=data.filter(函数(行){
返回Object.keys(行).some(函数(键){
返回字符串(行[key]).toLowerCase().indexOf(filterKey)>-1
})
})
console.log(数据)
返回数据
}
风险值数据=[{
姓名:“Alex”,
创建数据:“”
}, {
姓名:“Brett”,
创建数据:“”
}];

过滤器(数据“a”)要仅按名称搜索,可以执行此操作

var filterBy =function(data, filterKey) {
  data = data.filter(function (row) {
     return row["name"].toLowerCase().indexOf(filterKey) > -1;
  })
  console.log(data)
  return data
};
var data = [ { name: 'Alex', createdAt: '' }, { name: 'TT', createdAt: '' }, ];
console.log(filterBy(data,"a"));

要指定要查找的密钥,请执行以下操作:

filterBy (data, key, filterKey) {
    filterKey = filterKey.toLowerCase();                            // first make filterKey lowercased
    return data.filter(function (row) {                             // filter out all objects (rows) that ...
      return String(row[key]).toLowerCase().indexOf(filterKey);     // ... have their value of the key 'key' (lowercased) contains the filterKey (lowercased)
    });
}
然后您可以这样使用它(例如):


您是只按名称搜索还是按任何其他键搜索?请尝试使用“a”…添加
filterKey=filterKey.toLowerCase()在函数的开头。(您正在将值小写,但未将
筛选键
'a'!='a'
)小写)。
var newArray = filterBy(oldArray, "name", "A");