Javascript 传递anon函数时未定义Error属性(如何转换)?
我认为这种技巧叫做咖喱 问题: 问题: 如何使用Javascript 传递anon函数时未定义Error属性(如何转换)?,javascript,functional-programming,ecmascript-6,currying,Javascript,Functional Programming,Ecmascript 6,Currying,我认为这种技巧叫做咖喱 问题: 问题: 如何使用hasType,以便最终将未命名的anon函数替换为approvals.find(hasType) hasType引用的“type”变量在其作用域中不存在。您需要内联该函数以获取类型(或将其封装在闭包中,但这几乎是一样的) p.S.-不相关,但在ES6中,“{type:type}”可以缩短为“{type}”您可以使用.bind()。您可以将类型(额外参数)传递给回调 var批准=[ {type:'media'}, {type:'scope'},
hasType
,以便最终将未命名的anon函数替换为approvals.find(hasType)
hasType引用的“type”变量在其作用域中不存在。您需要内联该函数以获取类型(或将其封装在闭包中,但这几乎是一样的)
p.S.-不相关,但在ES6中,“{type:type}”可以缩短为“{type}”您可以使用
.bind()
。您可以将类型
(额外参数)传递给回调
var批准=[
{type:'media'},
{type:'scope'},
]
变量allApprovalTypes=[
"媒体",,
“范围”,
"金融",,
“合规性”,
];
变量hasType=(el,type)=>{
返回el.type==类型;
}
console.log(allApprovalTypes.map)((类型)=>{
returnapprovals.find(hasType.bind(null,type))| |{type:type}//这很有效。
}));
//没有约束力();
console.log(allApprovalTypes.map)((类型)=>{
returnapprovals.find((el)=>returnhastype(el,type))| |{type:type}//这很有效。
}));
您的hasType
函数如何知道type
变量?如何将其封装在闭包中以使hasType工作?这就是我试图实现的目标。我只是有点不懂语法。将hasType更改为接受“type”的函数,但返回hasType函数的原始版本。然后,在.find(…)中传递hasType(type):var hasType=(type)=>{return(el)=>{return el.type==type;};};}。。。allApprovalTypes.map(type=>{return approvals.find(hasType(type))|{type};});是的,这就是我要找的。这种技巧叫做“咖喱”,对我来说“咖喱”是一个新名词,但读过之后,我会说“是”,这个特殊的例子可以被认为是咖喱。下面的答案是“用结尾包装”。关于如何使用bind实现此w/o的任何想法?无绑定意味着在匿名函数中调用hasType()
(胖箭头函数)。我更新了这个,我正在寻找var hasType=(type)=>(el)=>el.type==type;
ReferenceError: type is not defined
at hasType:14:27
at allApprovalTypes.map:18:26
at eval:17:21
at eval
var approvals = [
{type: 'media'},
{type: 'scope'},
]
var allApprovalTypes = [
'media',
'scope',
'finance',
'compliance',
];
var hasType = (el) => {
return el.type === type;
}
allApprovalTypes.map((type) => {
return approvals.find((el)=> el.type === type) || {type: type} // this works.
});
allApprovalTypes.map((type) => {
return approvals.find(hasType) || {type: type} // this wont work.
});
allApprovalTypes.map((type) => {
return approvals.find((el) => {
return el.type === type;
}) || {type: type}
});
// closure
var hasType = (type) => (el) => {
return el.type === type;
}