Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

JavaScript-生成通用映射/查找/筛选函数

JavaScript-生成通用映射/查找/筛选函数,javascript,arrays,Javascript,Arrays,TLDR 您将如何制作一个函数,例如在数组中搜索值,但搜索的属性在哪里可以更改 例如 const search=(arr,text)=> { //如果我们想在e.phone上搜索而不是e.name呢? //如何将其与函数params一起传递? 返回arr.find(e=>e.name==text) }您可以使用数组#reduce查找嵌套属性(作为字符串传入)以与文本进行比较 const search=(arr、prop、text)=>{ const getProp=obj=>prop.spl

TLDR 您将如何制作一个函数,例如在数组中搜索值,但搜索的属性在哪里可以更改

例如

const search=(arr,text)=>
{
//如果我们想在e.phone上搜索而不是e.name呢?
//如何将其与函数params一起传递?
返回arr.find(e=>e.name==text)
}
您可以使用
数组#reduce
查找嵌套属性(作为字符串传入)以与文本进行比较

const search=(arr、prop、text)=>{
const getProp=obj=>prop.split('.').reduce((acc,curr)=>acc?[curr],obj);
返回arr.find(e=>getProp(e)==text);
}
log(搜索([{a:1},{a:{b:'test'}}],'a.b','test');

log(搜索([{name:'Joe'},{name:'John'},{name:'Bob'}],'name',Bob')可以使用括号表示法访问任何属性。看这里:哦,哇,我甚至不知道那是一件事。非常感谢男士:)添加另一个参数
(arr,prop,text)
并使用
e[prop]==text
我认为OP正在寻找一种方法来生成一个过滤函数,该函数不与一个键相关object@Rajesh他们不是在寻找一种搜索动态财产的方法吗?@Rajesh-我是的,OrAssayag发布了解决方案。我支持这个答案。简单而简短。