这对我来说很难在标题中解释,所以我只是举一个例子来更好地解释:
我想传递一个函数,例如 ()=>{console.log(this.operatorValue)}
,作为递归 traverseCriteria
函数的参数。
遍历标准函数
function traverseCriteria(arr, parameters,fn) {
for (const item of arr) {
if (Array.isArray(item))
this.traverseCriteria(item, parameters)
else if (typeof item === 'object'){
item.operatorValue = parameters[item.Property]
console.log(item.operatorValue) ///<-- REPLACE THIS WITH fn()
//fn()
}
}
return arr
}
在上面的函数中,我希望能够将 console.log(item.operatorValue)
替换为 fn();
const criteria = [
"and",
{
"Collection": "persons",
"Property": "phone",
"operator": "eq",
"operatorValue": "23138213"
},
{
"Collection": "persondetails",
"Property": "country",
"operator": "eq",
"operatorValue": "Russia"
}
]
const parameters = { phone: "23138213", "country": "Russia" };
函数调用:
traverseCriteria(criteria,parameters,()=>{console.log(this.operatorValue)});
最佳答案
关于javascript - 将范围绑定(bind)到 forEach 循环中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63774641/