欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组的常用api

程序员文章站 2022-07-13 08:06:24
...

Array.prototype.concat()

拼接多个数组,不改变里面的数组,返回一个新的数组

arr.every(callback[, thisArg])

对每个元素调用callback,直到它找到一个使 callback 返回 false(表示可转换为布尔值 false 的值)的元素。如果发现了一个这样的元素,every 方法将会立即返回 false。否则,callback 为每一个元素返回 true,every 就会返回 true。
callback 被调用时传入三个参数:元素值,元素的索引,原数组。
thisArg可选,this的值.

arr.some()

同上,有一个返回true即返回true。全为false则返回false。

arr.filter(callback[, thisArg]) filter

为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或 等价于 true 的值 的元素创建一个新数组。callback 只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中。
callback 被调用时传入三个参数:元素值,元素的索引,原数组。
thisArg可选,this的值.

array.forEach()

array.forEach(callback(currentValue, index, array){
    do something
}, this)

forEach 方法按升序为数组中含有效值的每一项执行一次callback 函数,那些已删除(使用delete方法等情况)或者未初始化的项将被跳过(但不包括那些值为 undefined 的项)(例如在稀疏数组上)。
callback为数组中每个元素执行的函数,该函数接收三个参数:
currentValue(当前值)数组中正在处理的当前元素。
index(索引)数组中正在处理的当前元素的索引。
array forEach()方法正在操作的数组。
thisArg可选可选参数。当执行回调 函数时用作this的值(参考对象)。
forEach不返回值,主要用来绑定事件。

array.map()

同上,但是返回一个新的数组。原数组不变。

arr.fill(value,start,end) 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。数组本身被改变。

value用来填充数组元素的值。
start 可选起始索引,默认值为0。
end 可选终止索引,默认值为 this.length。

arr.find(callback[, thisArg])与arr.findIndex(callback[, thisArg])

find 方法对数组中的每一项元素执行一次 callback 函数,直至有一个 callback 返回 true。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回 undefined。findIndex方法返回元素的索引。
callback 被调用时传入三个参数:元素值,元素的索引,原数组。
thisArg可选,this的值

arr.includes(searchElement, fromIndex)

用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
searchElement 需要查找的元素值。
fromIndex 可选 从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。

arr.indexOf(searchElement[, fromIndex = 0])与arr.lastIndexOf(searchElement[, fromIndex = arr.length-1])

同上,返回的是元素的索引。
lastIndexOf从后往前找。

arr.join(separator)

将数组元素拼接成字符串,默认参数为“,”。不改变原数组的值。
separator指定一个字符串来分隔数组的每个元素。如果需要(separator),将分隔符转换为字符串。如果省略(),数组元素用逗号分隔。默认为 ","。如果separator是空字符串(""),则所有元素之间都没有任何字符。

pop()/push()/unshift()/shift()

pop()删除最后一个元素,并返回该元素的值。
push()将一个或多个元素添加到数组的末尾,并返回新数组的长度。
shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
shift()方法将一个或多个元素添加到数组的开头,并返回新数组的长度。
四种方法都改变数组。

arr.reduce(callback[, initialValue])

reduce为数组中的每一个元素依次执行callback函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:
accumulator累加器 累加回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(如下所示)。
currentValue数组 中正在处理的元素。
currentIndex可选 数组中正在处理的当前元素的索引。 如果提供了initialValue,则索引号为0,否则为索引为1。
array可选 调用reduce的数组

initialValue可选 用作第一个调用 callback的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

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

arr.reverse()

颠倒数组值,改变原数组

arr.slice(start,end)

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

array.splice(start, deleteCount, item1, item2, ...)

返回值由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。改变原数组
start​
指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数);若只使用start参数而不使用deleteCount、item,如:array.splice(start) ,表示删除[start,end]的元素。
deleteCount 可选
整数,表示要移除的数组元素的个数。如果 deleteCount 是 0,则不移除元素。这种情况下,至少应添加一个新元素。如果 deleteCount 大于start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。
如果deleteCount被省略,则其相当于(arr.length - start)。
item1, item2, ... 可选
要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。

begin 可选
从该索引处开始提取原数组中的元素(从0开始)。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2)表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。如果省略 begin,则 slice 从索引 0 开始。
end可选
在该索引处结束提取原数组元素(从0开始)。slice会提取原数组中索引从 begin 到 end 的所有元素(包含begin,但不包含end)。
slice(1,4) 提取原数组中的第二个元素开始直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1)表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。如果 end 被省略,则slice 会一直提取到原数组末尾。
如果 end 大于数组长度,slice 也会一直提取到原数组末尾。

arr.sort(compareFunction)

对数组进行排序,默认根据Unicode位点进行排序。改变原数组值
compareFunction可选函数
如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。
如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
compareFunction(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]