美文网首页让前端飞
javaScript数组对象的几个方法

javaScript数组对象的几个方法

作者: danr小胖 | 来源:发表于2017-10-11 14:31 被阅读0次

    Array.prototype.splice

    splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
    语法
    array.splice(start)
    array.splice(start, deleteCount)
    array.splice(start, deleteCount, item1, item2, ...)

    var myFish = ["angel", "clown", "mandarin", "surgeon"];
    
    //从第 2 位开始删除 0 个元素,插入 "drum"
    var removed = myFish.splice(2, 0, "drum");
    //运算后的 myFish:["angel", "clown", "drum", "mandarin", "surgeon"]
    //被删除元素数组:[],没有元素被删除
    
    //从第 3 位开始删除 1 个元素
    removed = myFish.splice(3, 1);
    //运算后的myFish:["angel", "clown", "drum", "surgeon"]
    //被删除元素数组:["mandarin"]
    
    //从第 2 位开始删除 1 个元素,然后插入 "trumpet"
    removed = myFish.splice(2, 1, "trumpet");
    //运算后的myFish: ["angel", "clown", "trumpet", "surgeon"]
    //被删除元素数组:["drum"]
    
    //从第 0 位开始删除 2 个元素,然后插入 "parrot", "anemone" 和 "blue"
    removed = myFish.splice(0, 2, "parrot", "anemone", "blue");
    //运算后的myFish:["parrot", "anemone", "blue", "trumpet", "surgeon"]
    //被删除元素的数组:["angel", "clown"]
    
    //从第 3 位开始删除 2 个元素
    removed = myFish.splice(3, Number.MAX_VALUE);
    //运算后的myFish: ["parrot", "anemone", "blue"]
    //被删除元素的数组:["trumpet", "surgeon"]
    

    Array.prototype.slice()

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

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

    Array.prototype.reduce()

    reduce() 方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。
    语法
    arr.reduce(callback[, initialValue])

    数组累加求和

    let res = [0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array){
      return accumulator + currentValue;
    });
    console.log(res);
    

    reduce为数组中的每一个元素依次执行callback函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:①accumulator ②currentValue ③currentIndex ④array

    回调函数第一次执行时,accumulator 和currentValue的取值有两种情况:调用reduce时提供initialValue,accumulator取值为initialValue,currentValue取数组中的第一个值;没有提供 initialValue,accumulator取数组中的第一个值,currentValue取数组中的第二个值

    注意:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始。

    Array.prototype.find()

    find()方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

    var inventory = [
        {name: 'apples', quantity: 2},
        {name: 'bananas', quantity: 0},
        {name: 'cherries', quantity: 5}
    ];
    
    function findBananas(fruit){
        return fruit.name === 'bananas';
    }
    console.log(inventory.find(findBananas));
    
    const isPrime = (ele, index, arr) => {
        let start = 2;
        while(start <= Math.sqrt(ele)){
            if(ele % start ===0){
               return false;
            }
            start++;
        }
        return ele > 1;
    }
    const arr = [7,8,9,10,11];
    console.log(arr.find(isPrime));
    

    相关文章

      网友评论

        本文标题:javaScript数组对象的几个方法

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