美文网首页
flatten,map,reduce方法总结

flatten,map,reduce方法总结

作者: 赵一矛 | 来源:发表于2018-04-01 18:51 被阅读0次
    (1)flatten的用法

    将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组.

    var flatten = function(input, shallow, strict, startIndex) {
      // ...
    };
    

    第一个参数 input 即为需要展开的数组,所以 flatten 方法中传入的第一个参数肯定是数组(或者 arguments);
    第二个参数 shallow 是个布尔值,如果为 false,则表示数组是深度展开,如果为 true 则表示只展开一层;
    第三个元素strict 也是个布尔值,当 shallow 为 true 并且 strict 也为 true 时,能过滤 input 参数元素中的非数组元素;
    第四个参数表示 input 展开的起始位置,即从 input 数组中第几个元素开始展开。
    在使用flatten的时候,应该先安装

    npm install array-flatten --save
    

    使用的时候记着

    var flatten = require('array-flatten')
    

    例如:

    var flatten = require('array-flatten')
    var arr=[1, [2, [3, [4, [5], 6], 7], 8], 9];
    var result= flatten(arr);
    console.log(result);
    

    结果:


    2018-04-02 21-56-41屏幕截图.png

    展开两层数组

    flatten.depth([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
    //=> [1, 2, 3, [4, [5], 6], 7, 8, 9] 
    
    (2)map()方法的使用

    map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后值。
    map()方法按照原始数组元素顺序依次处理元素。
    注:
    map不会对空数组进行检测
    map不会改变原始数组

    arr.map(function(currentValue,index,arr),thisValue) 
    

    参数说明
    function(currentValue,index,arr)
    必须,函数,数组中的每个元素都会执行这个函数函数参数
    函数参数
    currentValue 必须 当前元素值
    index 可选 当前元素的索引值
    arr 可选 当前元素属于的数组对象。

    thisValue:需要处理的映射的值,可省略。
    例:
    数组中的每个数乘2;

    var arr=[1,2,3,4,5];
    var result=arr.map(function(element,index,arr){
    return element*2;
    });
    console.log(result);
    

    或用thisValue

    var arr=[1,2,3,4,5];
    var thisValue=2;
    var result=arr.map(function(element,index,arr){
    return element*thisValue;
    },thisValue);
    console.log(result);
    

    结果:


    2018-04-02 22-18-33屏幕截图.png
    (3)reduce总结

    reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值。
    arr.reduce(callback[, initialValue])

    callback(一个在数组中每一项上调用的函数,接受四个函数:){
    previousValue(上一次调用回调函数时的返回值,或者初始值)
    currentValue(当前正在处理的数组元素)
    currentIndex(当前正在处理的数组元素下标)
    array(调用reduce()方法的数组)
    }

    initialValue(可选的初始值。作为第一次调用回调函数时传给previousValue的值)

    对数组求和

    var arr=[1,2,3,5];
    sum=0;
    sum=arr.reduce(function(x,y){
    return x+y;
    });
    

    var arr=[1,2,3,5];
    var sum=arr.reduce(function(x,y){
    return x+y;
    },0);
    

    求最大值

    var max=arr.reduce(function(x,y){
    return x>y?x:y;
    });
    

    相关文章

      网友评论

          本文标题:flatten,map,reduce方法总结

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