Javascript 在数组中搜索多个键
具有如下阵列:Javascript 在数组中搜索多个键,javascript,Javascript,具有如下阵列: let MyArray = [{ id: 1, name: 'xx', age: '20', prop: val, propx: valx }, { id: 2, name: 'yy', age: '30', prop: val2, propx: valy }, { id: 3, name: 'zz', age: '40', prop: val3, propx: valz }] 如何根据对象属性筛选此数组以获得搜索结果?我想以这种形式编写一个函数,并
let MyArray = [{
id: 1, name: 'xx', age: '20', prop: val, propx: valx
},
{
id: 2, name: 'yy', age: '30', prop: val2, propx: valy
},
{
id: 3, name: 'zz', age: '40', prop: val3, propx: valz
}]
如何根据对象属性筛选此数组以获得搜索结果?我想以这种形式编写一个函数,并从myArray
获得过滤结果:
search(myArray, ['name', 'prop', 'propx'], searchKey)
条件应为:
MyArray[i][name].indexOf(searchKey) > -1 || MyArray[i][prop].indexOf(searchKey) > -1 || MyArray[i][propx].indexOf(searchKey) > -1)
是否有可能动态生成此规则或规则?
我已经做的是:
MyArray.filter((item) => item['name'].indexOf('x') > -1 || item['prop'].indexOf('x') > -1))
这已经起作用了,但它不是动态的,因为如果我想搜索“propx”,我必须重写如下条件:
item['name'].indexOf('x') > -1 || item['prop'].indexOf('x') > -1 || item['propx'].indexOf('x') > -1
它看起来像一个递归,但我不能再思考了^^我觉得在这种用例中使用类似works Prefict的东西
const result=matchSorter(MyArray,searchKey,{keys:['name','prop','propx']}
当有人已经为你做了工作时,再发明轮子是没有意义的。你可以使用lodash的过滤器。
否决票是因为您没有按照发布问题的规则进行操作。编辑您的问题并讨论您尝试过的内容、您尝试过的结果、您使用google发现的内容以及这些潜在解决方案不适用于您的原因。您可以始终循环浏览数组的键值对,然后选择您需要的键值对。Thx,但我不想要一个库!我确信这可以通过递归实现!仍在进行中