Javascript 函数为-not的回调的反向返回值(回调)
我有一个过滤函数,我向其中传递了一个测试函数:Javascript 函数为-not的回调的反向返回值(回调),javascript,arrays,functional-programming,Javascript,Arrays,Functional Programming,我有一个过滤函数,我向其中传递了一个测试函数: var array = [1,3,5,7,9] function bigger(n){return n > 5} function filterArray(data,testfn){ return data.filter(e=> testfn(e))} console.log(filterArray(array,bigger)) >>>[7,9] 现在我想能够写作了 console.log(filterArr
var array = [1,3,5,7,9]
function bigger(n){return n > 5}
function filterArray(data,testfn){
return data.filter(e=> testfn(e))}
console.log(filterArray(array,bigger))
>>>[7,9]
现在我想能够写作了
console.log(filterArray(array,not(bigger)))
>>>[1,3,5]
您可以创建一个函数
not
,该函数接受一个函数并返回另一个函数,该函数返回调用原始函数的结果的倒数:
var数组=[1,3,5,7,9];
函数更大(n){
返回n>5
}
函数过滤器阵列(数据,测试fn){
返回数据.filter(e=>testfn(e))
}
功能不可用(f){
返回函数(n){
返回!f(n);
}
}
log(filterray(数组,更大));
log(filterray(数组,而不是(更大))
您可以创建一个函数not
,该函数接受一个函数并返回另一个函数,该函数返回调用原始函数的结果的倒数:
var数组=[1,3,5,7,9];
函数更大(n){
返回n>5
}
函数过滤器阵列(数据,测试fn){
返回数据.filter(e=>testfn(e))
}
功能不可用(f){
返回函数(n){
返回!f(n);
}
}
log(filterray(数组,更大));
log(filterray(数组,而不是(更大))代码>我将执行以下操作
var array = [1,3,5,7,9]
function bigger(n){return n > 5}
console.log(array.filter(element => !bigger(element)))
我会做如下的事情
var array = [1,3,5,7,9]
function bigger(n){return n > 5}
console.log(array.filter(element => !bigger(element)))
您可以这样做:
var数组=[1,3,5,7,9]
常数isBiggerThan=(n)=>n>5
常数isNot=(fn)=>(n)=>!fn(n)
常量过滤器阵列=(数据,testfn)=>data.filter(e=>testfn(e))
log(filterary(数组,isBiggerThan))
log(filterary(array,isNot(isBiggerThan))
您可以执行以下操作:
var数组=[1,3,5,7,9]
常数isBiggerThan=(n)=>n>5
常数isNot=(fn)=>(n)=>!fn(n)
常量过滤器阵列=(数据,testfn)=>data.filter(e=>testfn(e))
log(filterary(数组,isBiggerThan))
log(filterArray(array,isNot(isBiggerThan))
用于说明可变函数:
在数组“arguments”中收集参数并将其传递给函数
function not(myFunction){
if (typeof myFunction != "function"){return !myFunction }
return function (...arguments) {
return !myFunction.apply(null,arguments)
}
}
简言之:
const not = f => (...a) => !f.apply(null,a)
const not = f => typeof f != "function" ? !f : (...a) => !f.apply(null,a)
还要使其适用于所有值-检查是否已传递函数。这也允许像这样使用它而不是(更大的(1,2))
:
简言之:
const not = f => (...a) => !f.apply(null,a)
const not = f => typeof f != "function" ? !f : (...a) => !f.apply(null,a)
要说明可变函数,请执行以下操作:
在数组“arguments”中收集参数并将其传递给函数
function not(myFunction){
if (typeof myFunction != "function"){return !myFunction }
return function (...arguments) {
return !myFunction.apply(null,arguments)
}
}
简言之:
const not = f => (...a) => !f.apply(null,a)
const not = f => typeof f != "function" ? !f : (...a) => !f.apply(null,a)
还要使其适用于所有值-检查是否已传递函数。这也允许像这样使用它而不是(更大的(1,2))
:
简言之:
const not = f => (...a) => !f.apply(null,a)
const not = f => typeof f != "function" ? !f : (...a) => !f.apply(null,a)
重点是使它模块化,这样我可以交换更大的:更大,更少,更长,等等。重点是使它模块化,这样我可以交换更大的:更大,更少,更长,等等。