Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中搜索多个键_Javascript - Fatal编程技术网

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,但我不想要一个库!我确信这可以通过递归实现!仍在进行中