美文网首页大前端开发
操作数组方法的使用总结一

操作数组方法的使用总结一

作者: Maco_wang | 来源:发表于2019-06-21 10:26 被阅读7次

    操作数据的方法有很多,我们在日常开发过程中会经常用到这些方法,今天把这些方法仔细的总结一下。

    打开浏览器控制台,输入Array.prototype ,可以查看到Array的方法。 Array.prototype.jpg
    常用的方法包含如:concat,every,filter,find,findIndex,forEach,indexOf,lastIndexOf,map,pop,push,reverse,shift,some,sort,splice,toString,unshift等.

    首先先了解一下会修改原数组的一些方法:

    pop()

    该方法会从数组中移除并返回最后一个数组,同时改变数组的长度。如果原数组为空,则返回值为undefined

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var popped = myFish.pop();
    console.log(myFish); // ['angel', 'clown', 'mandarin' ] 
    console.log(popped); // 'sturgeon'
    var myBooks = [];
    var book = myBooks.pop();
    console.log(myBooks); // [ ] 
    console.log(book); // undefined
    

    push()

    该方法将一个或多个元素添加到数组的末尾并返回数组的新长度。

    var animals = ['pigs', 'goats', 'sheep'];
    
    console.log(animals.push('cows'));// 4
    
    console.log(animals);// ["pigs", "goats", "sheep", "cows"]
    
    animals.push('chickens');
    
    console.log(animals);// ["pigs", "goats", "sheep", "cows", "chickens"]
    
    

    reverse()

    该方法将阵列反转。第一个数组元素成为最后一个,最后一个数组元素成为第一个。

    var array1 = ['one', 'two', 'three'];
    console.log('array1: ', array1);// ['one', 'two', 'three']
    
    var reversed = array1.reverse(); 
    console.log('reversed: ', reversed);// ['three', 'two', 'one']
    console.log('array1: ', array1);//   ['three', 'two', 'one']
    
    

    shift()

    该方法从数组中删除第一个元素并返回已删除的元素。此方法更改数组的长度

    var array1 = [1, 2, 3];
    
    var firstElement = array1.shift();
    
    console.log(array1);//  [2, 3]
    
    console.log(firstElement);//  1
    

    sort(Fn))

    该方法对数组中的元素进行排序并返回已排序的数组。
    sort中的Fn是可选的,默认状态排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。

    var months = ['March', 'Jan', 'Feb', 'Dec'];
    
    months.sort();
    
    console.log(months);// expected output: Array ["Dec", "Feb", "Jan", "March"]
    
    var array1 = [1, 30, 4, 21, 100000];
    
    array1.sort();
    
    console.log(array1);//[1, 100000, 21, 30, 4]
    

    sort 中的fn(a,b)是用于指定定义排序顺序的函数。如果省略,则将数组元素转换为字符串,然后根据每个字符的[Unicode]代码点值进行排序。
    a 第一个用于比较的元素。
    b 第二个要素进行比较
    如果fn(a, b)小于0,则排序a为低于b (即a先到达)的索引。
    如果fn(a, b)返回0,离开a,并b相对于彼此不变,但对于所有不同的元素进行排序。
    如果fn(a, b)大于0,则排序b为低于a (即b首先出现)的索引。

    var numbers = [4, 2, 5, 1, 3];
    numbers.sort(function(a, b) {
      return a - b;
    });
    console.log(numbers);// [1, 2, 3, 4, 5]
    
    var items = [
      { name: 'Edward', value: 21 },
      { name: 'Sharpe', value: 37 },
      { name: 'And', value: 45 },
      { name: 'The', value: -12 },
      { name: 'Magnetic', value: 13 },
      { name: 'Zeros', value: 37 }
    ];
    
    // 按值排序
    items.sort(function (a, b) {
      return a.value - b.value;
    });
    
    // 按名字排序
    items.sort(function(a, b) {
      var nameA = a.name.toUpperCase(); // 忽略大小写
      var nameB = b.name.toUpperCase(); // 忽略大小写
      if (nameA < nameB) {
        return -1;
      }
      if (nameA > nameB) {
        return 1;
      }
    
      // 名称相同的情况
      return 0;
    });
    

    splice()

    该方法通过删除或替换现有元素和/或[在适当位置]添加新元素来更改数组的内容。
    var arrDeletedItems = array .splice(start [,deleteCount [,e1 [,e2 [,...]]]])
    start: 要开始更改数组的索引。如果大于数组的长度,start则将设置为数组的长度。如果是负数,它将从数组的末尾开始有许多元素(原点为-1,意思是-n是第n个最后一个元素的索引,因此等于索引array.length - n)。如果绝对值 start大于数组的长度,则它将从索引0开始。
    deleteCount :可选,一个整数,指示要从中删除的数组中的元素数。
    如果deleteCount省略,或者它的值等于或大于array.length - start(即,如果它等于或大于数组中剩余的元素数,从start开始),那么所有元素从start 数组到结尾将被删除。
    如果deleteCount为0或负数,则不删除任何元素。在这种情况下,您应该至少指定一个新元素。
    item1, item2, ... 可选的
    要添加到数组的元素,从 start开始。如果未指定任何元素,splice()则只会从数组中删除元素。
    arrDeletedItems:包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果未删除任何元素,则返回空数组

    例子:从索引2中删除0(零)元素,并插入“drum”
    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(2, 0, 'drum');
    
    // myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"] 
    // removed = []
    
    例子:从索引2中删除1个元素,然后插入“trumpet”
    
    var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
    var removed = myFish.splice(2, 1, 'trumpet');
    
    // myFish = ["angel", "clown", "trumpet", "sturgeon"]
    // removed = ["drum"]
    

    unshift()

    该方法将一个或多个元素添加到数组的开头,并返回数组的新长度。
    var lastLength = arr.unshift(e1 [,... [,en ]])
    en:要添加到数组前面的元素。
    lastLength:返回新数组的长度。

    let arr = [4,5,6];
    arr.unshift(1,2,3);
    的console.log(arr); // [ 1,2,3,4,5,6 ]
    
    arr = [4,5,6]; //重置数组
    arr.unshift(1);
    arr.unshift(2);
    arr.unshift(3);
    console.log(arr); // [ 3,2,1,4,5,6]
    
    let arr = [1, 2];
    
    var lastLength = arr.unshift(0); // lastLength = 3
    // arr = [0, 1, 2]
    
    lastLength = arr.unshift(-2, -1); // lastLength = 5
    // arr = [-2, -1, 0, 1, 2]
    
    lastLength = arr.unshift([-4, -3]); // lastLength =  6
    // arr = [[-4, -3], -2, -1, 0, 1, 2]
    
    lastLength = arr.unshift([-7, -6], [-5]); //lastLength= 8
    // arr = [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]
    

    今天就先总结一下会改变原始数组的一些方法。下次再讲一讲不会改变原始数组,但是会返回一些数组的特定属性的方法。

    相关文章

      网友评论

        本文标题:操作数组方法的使用总结一

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