js常用数组api总结

235 阅读3分钟
  1. 改变原数组的方法

  • Array.prototype.push() push()方法往数组末尾添加一个或者多个元素,返回新数组长度,原数组被修改
const array1 = [1, 2, 3];
const pushReturnLength = array1.push(5); //返回新数组长度4,原数组array1也被修改 [1, 2, 3, 5]
  • Array.prototype.pop() pop()删除数组的最后一个元素,返回被删除的值,原数组被修改
const array1 = [1, 2, 3];
const popReturnData = array1.pop(); //返回被删除的最后一个元素3,原数组array1也被修改 [1, 2]
  • Array.prototype.shift() shift()删除数组的第一个元素,返回被删除的值,原数组被修改
const array1 = [1, 2, 3];
const shiftReturnData = array1.shift(); //返回被删除的第一个元素1,原数组array1也被修改 [2, 3]
  • Array.prototype.unshift() unshift()向数组头部添加一个或者多个元素,返回新数组长度,原属组被修改
const array1 = [1, 2, 3];
const unshiftReturnLength = array1.unshift(5, 6); //返回新数组长度5,原数组array1也被修改 [5, 6, 1, 2, 3]
  • Array.prototype.reverse() reverse()将数组反转,返回反转后的数组,原数组被改变
const array1 = [1, 2, 3];
const reverseReturnNewArray = array1.reverse(); //返回新数组[3, 2, 1],原数组array1也被修改[3, 2, 1]
  • Array.prototype.sort() sort()用于对数组元素进行排序,比较的是UTF-16的值,一般我们会用在一个数字数组中进行升序或者降序排列。接收一个函数作为参数,函数有两参数。默认是升序排序,可以指定降序排列。返回排列后的数组,改变原数组
const array1 = [23, 34, 2];
const sortArray = array1.sort(); //返回新数组[2, 23, 34],原数组array1也被修改[2, 23, 34],默认是升序排列
const sortReduceArray = array1.sort((a, b) => b - a); //指定降序 返回新数组[34, 23, 2],原数组array1也被修改[34, 23, 2]
  • Array.prototype.splice() splice()通过索引位置删除或者替换现有元素,或者原地添加新元素,返回被删除元素的数组,原数组被改变 接收三个参数,aplice(start, deleteCount, item1, item2,  ...) start:表示需要删除或者添加元素的开始位置 ,从索引位置开始操作,如果为负数,则从-n开始操作,如果负数的绝对值大于数组的长度,则表示开始位置为第0 位 deleteCount:可选参数,指定需要删除元素的个数,从start位置开始删除,如果有删除的元素,则返回被删除元素的数组,如果没有,则返回空数组 item1, item2,  ...:要添加进数组的元素,从start位置开始添加
//### [从索引 2 的位置开始删除 0 个元素,插入“drum”]
var myFish = ["angel", "clown", "mandarin", "sturgeon"];
var removed = myFish.splice(2, 0, "drum");

// 运算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"]
// 被删除的元素: [], 没有元素被删除
  1. 不改变原数组的方法

  • Array.prototype.concat() concat()方法用于合并两个或者多个数组,返回一个新数组,不会改变原数组 es6出现了数组的解构,可以更便捷的实现数组的拼接
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const array3 = array1.concat(array2); // [1, 2, 3, 4, 5, 6]
const array4 = [...array1, ...array2]; // 解构实现数组的拼接[1, 2, 3, 4, 5, 6]
  • Array.prototype.slice() slice()是截取数组中的一段元素,并且返回截取的元素数组。接收两个参数start,end,都是可选参数,从start开始截取到end,但不包含end。不改变原数组
const array1 = [1, 2, 3];
const sliceReturnData = array1.slice(); //不传参数的话,默认浅拷贝出来一个相同的数组 [1, 2, 3];
const sliceReturnData1 = array1.slice(1); //从1号位置开始截取到最后一位,返回[2, 3]
const sliceReturnData2 = array1.slice(1, 2); //从1号位置开始截取到第2号位置,但不包含2号位置,返回[2]
  • Array.prototype.join() join(),将数组元素使用参数分隔符号拼接为字符串,并且返回,并不改变原数组
const array1 = ["hello", "world"];
const joinReturnString = array1.join("-"); //返回用-连接的字符串 "hello-world"
  • Array.prototype.indexOf() indexOf()返回元素在数组中第一次出现的位置,不改变原数组
const array1 = [1, 2, 3, 2];
const indexOfReturnData = array1.indexOf(2); //返回数组下标1,原数组不变