美文网首页
2018-04-10 数组方法整理

2018-04-10 数组方法整理

作者: 范晓坤 | 来源:发表于2018-04-10 15:45 被阅读0次

    1.reduce方法

    reduce方法从左到右用来迭代数组的所有项,然后构建一个最终的返回值。
    
    语法:
    arr.reduce(callback,初始化值)
    

    reduce为数组中的每一个元素依次执行callback函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:
    accumulator -------未提供初始值时,默认是数组的第一个元素
    currentValue -------数组当前值
    currentIndex -------数组当前索引
    array------------------当前数组

    应用:

    1.数组里所有值求和

    var sum = [1,2,3,4].reduce(function(pre,cur){
              return pre +cur;
    },0);
    //sum is 10
    

    2.计算数组中每个元素出现的次数

    var names = ['Alice','Bob','Tiff','Bruce','Alice'];
    var countedNames = names.reduce(function(allNames,name){
          if(name in allNames){
                  allNames[name]++;
          }else{
                  allNames[name]=1;
          }
    return allNames;
    },{});
    // countedNames is:
    // { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
    

    3.数组去重

    var arr=[1,2,1,2,3,3,4,4,5,6,7];
    var nArr = arr.sort().reduce(function(initValue,current){
       if(initValue[initValue.length-1]!==current){
          initValue.push(current);
    }
    return initValue;
    },[])
    //nArr [1,2,3,4,5,6,7]
    

    2.reduceRight方法

     reduceRight方法从右到左用来迭代数组的所有项,然后构建一个最终的返回值。
    
    reduce和reduceRight区别
    var a =['1','2','3','4','5','6'];
    var left = a.reduce(function(pre,cur){return pre +cur;});
    var right = a.reduceRight(function(pre,cur){return pre +cur});
    //left '12345'
    //right '54321'
    

    3.slice方法

    slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
    
    语法:

    arr.slice(begin(可选),end(可选)),默认从0开始,支持输入负数。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。
    1.返回现有数组的一部分

    var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
    var citrus = fruits.slice(1, 3);
    
    // fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
    // citrus contains ['Orange','Lemon']
    

    2.把类数组转成真正的数组

    function list() {
      return Array.prototype.slice.call(arguments);
    }
    var list1 = list(1, 2, 3); // [1, 2, 3]
    
    或者用ES6的方法 array.from();
    

    3.生成一个新的数组

    arr.slice();
    

    4.every()方法

    every() 方法测试数组的所有元素是否都通过了指定函数的测试。
    1.检测所有数组的大小

    检测数组中的元素是否都大于10
    function isBigEnough(element, index, array) {
      return (element >= 10);
    }
    var passed = [12, 5, 8, 130, 44].every(isBigEnough);
    // passed is false
    passed = [12, 54, 18, 130, 44].every(isBigEnough);
    // passed is true
    

    5.some()方法

    some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试。

    const isBiggerThan10 = (element, index, array) => {
      return element > 10;
    }
    [2, 5, 8, 1, 4].some(isBiggerThan10);  
    // false
    [12, 5, 8, 1, 4].some(isBiggerThan10); 
    // true
    

    相关文章

      网友评论

          本文标题:2018-04-10 数组方法整理

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