改变原数组的方法

248 阅读3分钟

「这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战

数组原型提供了非常多的方法,这里分为三类来讲,一类会改变原数组的值,一类是不会改变原数组,以及数组的遍历方法。

能改变原数组的方法一共有九个

let a = [1,2,3];
ES5: a.splice()
/ a.sort() 
/ a.pop()
/ a.shift()
/ a.push()
/ a.unshift()
/ a.reverse() 
ES6: 
a.copyWithin() 
/ a.fill()

splice() 添加/删除数组元素

splice() 方法从数组中添加/删除项目,然后返回被删除的项目

array.splice(index,howmany,item1,.....,itemX)
 参数:
 index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
 howmany:可选。要删除的项目数量。如果设置为 0,则不会删除项目。
 item1, ..., itemX: 可选。向数组添加的新项目
 数组如果元素不够,会删除到最后一个元素为止
 操作的元素,包括开始的那个元素
 可以添加很多个元素
 添加是在开始的元素前面添加的

sort() 数组排序

sort()方法对数组元素进行排序,并返回这个数组。

默认情况下sort()方法没有传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。

sort的比较函数有两个默认参数,要在函数中接收这两个参数,这两个参数是数组中两个要比较的元素,通常我们用 a 和 b 接收两个将要比较的元素:

  • 若比较函数返回值<0,那么a将排到b的前面;
  • 若比较函数返回值=0,那么a 和 b 相对位置不变;
  • 若比较函数返回值>0,那么b 排在a 将的前面;

V8 引擎中 sort 函数只给出了两种排序 插入排序 和 快速排序,数量小于10的数组使用 插入排序,比10大的数组则使用 快速排序。

pop() 删除一个数组中的最后的一个元素

pop() 方法删除一个数组中的最后的一个元素,并且返回这个元素。

let a = [1,2,3]; let item = a.pop(); // 3

shift() 删除数组的第一个元素

shift()方法删除数组的第一个元素,并返回这个元素。

let a = [1,2,3]; let item = a.shift(); // 1

push() 向数组的末尾添加元素

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

let a = [1,2,3]; let item = a.push(4); // [1,2,3,4]

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度

item1, item2, ..., itemX ,要添加到数组开头的元素

reverse() 反转数组中元素的顺序

copyWithin() 指定位置的成员复制到其他位置

在当前数组内部,将指定位置的成员复制到其他位置,并返回这个数组。 三个参数都是数值,如果不是,会自动转为数值.

  1. target(必需):从该位置开始替换数据。如果为负值,表示倒数。
  2. start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。
  3. end(可选):到该位置前停止读取数据,默认等于数组长度。使用负数可从数组结尾处规定位置。

fill() 填充数组

使用给定值,填充一个数组。 参数:

第一个元素(必须): 要填充数组的值

第二个元素(可选): 填充的开始位置,默认值为0

第三个元素(可选):填充的结束位置,默认是为this.length