8.js基础--高阶函数

作者: 梦见君笑 | 来源:发表于2017-03-15 14:41 被阅读37次

1.高阶函数(Higher-order function)

一个函数接受另一个函数作为参数,那么这种函数就称之为高阶函数。

function add(x,y,f){
 return f(x) + f(y)    ==> Math.abs(x) + Math.abs(y)
}
add(-1,2,Math.abs);

2.map()

map()方法是定义在js的array中的,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果。

function pow(x){
   return x * x;
}
var arr = [1,2,3,4];
arr.map(pow);  //[1,4,9,16]

把f(x)作用在Array的每一个元素并把结果生成一个新的Array。map()抽象了运算规则。

var arr = [1,2,3];
arr.map(String);  //['1','2','3']

利用map将数组转化为object 

var arr = [ 1 , 2 , 3 , 4 ]
var obj = arr.map(function(item){
      return {value: item,label: item}
})

obj

实际上是遍历数组中的每一个元素,再执行相应的操作。

3.reduce()

Array的reduce()把一个函数作用在这个Array的[x1,x2,x3,...]上,reduce()把结果继续和序列的下一个元素做累积计算。

[x1,x2,x3,x4].reduce(f) =f(f(f(x1,x2),x3),x4) 

var arr = [1,2,3,4];
arr.reduce(function(x1,x2){    //匿名函数
        return x1*x2;
});

4.filter()

filter()用于把array中的某些元素过滤掉,然后返回剩下的元素。

filter()把传入的函数作用到每个元素上,然后根据返回值是true还是false决定保留还是丢弃。

var arr = [1,2,3,4];
var arr1 = arr.filter(function(x){
      return x % 2 == 0;
});
arr1;   // [2,4]

trim():方法会删除一个字符串两端的空白字符串。在这个字符串里的所有空格字符(space,tab,no-breakspace)以及所有的行结束符(LF,CR)

var  str = '  bac  ';
console.log(str.trim());   //bac
console.log(str);//  bac   (有空格)   ---不改变原字符串

去除数组中的空字符串

var arr = [1,2,' ',null,undefined,'c'];
var r = arr.filter(function(s){
   return s&&s.trim()   
});
console.log(r);   //   [1,2,'c']

5.sort()

sort()方法用于对数组进行排序,排序的方法不符合常规:(默认把所有的元素先转换成String再按照ASCII码排序)

var arr = [1,2,12,01];
arr.sort(); //[1,1,12,2]

数组去重:

var arr = [1,2,1,3,4];
var a = arr.filter(function(element,index,array){
        return arr.indexOf(element) == index;
});
a; //[1,2,3,4]

鉴于sort()方法排序的不合常理,我们可以自己定义排序规则,然后传入作为sort()方法的参数。

var arr = [2,5,1,7,3];
console.log(arr.sort(compare));    // [1,2,3,5,7]
console.log(arr);      // [1,2,3,5,7]    --- 直接修改原数组
function compare(x,y){
    return x-y;            //升序          y-x    // 降序
}

相关文章

  • 8.js基础--高阶函数

    1.高阶函数(Higher-order function) 一个函数接受另一个函数作为参数,那么这种函数就称之为高...

  • Python函数和高阶函数

    函数(基础、高阶函数(实参高阶函数、返回值高阶、装饰器)) 1.函数就是实现某一特定功能的代码块 2.定义函数(创...

  • 装饰器

    [TOC] 函数 函数定义 函数调用 高阶函数 嵌套函数 装饰器 装饰器=高阶函数+嵌套函数 基础装饰器 假设有一...

  • Kotlin 高阶函数和Lambda

    写什么零基础系列太累人了,幸好放弃掉了然后写点什么呢? 高阶函数 先了解 高阶函数 的定义。搬运官方文档内容:高阶...

  • Kotlin学习之高阶函数和Lambda表达式的基础用法

    Kotlin学习之高阶函数和Lambda表达式的基础用法 一、定义和调用高阶函数的写法 kotlin.collec...

  • Kotlin高阶函数的理解与使用

    1. 基础定义 1.1 什么是高阶函数 按照定义,高阶函数就是以另外一个函数作为参数或者返回值的函数。在Kotli...

  • python学习(三)函数式编程

    高阶函数 函数也是变量,函数参数为函数的函数,称作高阶函数 自定义高阶函数 内建高阶函数 map/reducema...

  • 11.Lambda和高阶函数(Lambda and Higher

    高阶函数 kotlin_Lambda,高阶函数 *swift_高阶函数

  • Python | 高阶函数基本应用及Decorator装饰器

    一、高阶函数 理解什么是高阶函数?以及高阶函数的基本应用方法 ▲ 高阶函数 在了解什么是高阶函数之前,我们来看几个...

  • 四、函数进阶

    一. 高阶函数 参数类型包含函数类型或返回值类型为函数类型的函数为高阶函数。 常见的高阶函数 高阶函数的调用 二....

网友评论

    本文标题:8.js基础--高阶函数

    本文链接:https://www.haomeiwen.com/subject/qjnhnttx.html