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)

重点是使它模块化,这样我可以交换更大的:更大,更少,更长,等等。重点是使它模块化,这样我可以交换更大的:更大,更少,更长,等等。