JS数组的常用方法
一、Array.prototype.at()
at()
方法接收一个整数值并返回该索引对应的元素,允许正数和负数。负整数从数组中的最后一个元素开始倒数。
语法:
at(index)
二、Array.prototype.concat()
concat()
方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
语法:
concat()
concat(value0)
concat(value0, value1)
concat(value0, value1, /* … ,*/ valueN)
三、Array.prototype.fill()
fill()
方法用一个固定值填充一个数组中从起始索引(默认为 0
)到终止索引(默认为 array.length
)内的全部元素。它返回修改后的数组。
语法:
fill(value)//全部填充
fill(value, start)//从start开始填充
fill(value, start, end)//从start填充到end结束
四、Array.prototype.filter()
filter()
方法创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。
语法:
filter(callbackFn)//callbackFn为回调函数
filter(callbackFn, thisArg)
filter()
方法是一个迭代方法。它为数组中的每个元素调用提供的 callbackFn
函数一次,并构造一个由所有返回真值的元素值组成的新数组。未通过 callbackFn
测试的数组元素不会包含在新数组中。
五、Array.prototype.join()
join()
方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串,用逗号或指定的分隔符字符串分隔。如果数组只有一个元素,那么将返回该元素而不使用分隔符。
语法:
join()
join(separator)
所有数组元素被转换成字符串并连接到一个字符串中。如果一个元素是 undefined
或 null
,它将被转换为空字符串,而不是字符串 "undefined"
或 "null"
。
六、Array.prototype.map()
map()
方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
语法:
map(callbackFn)
map(callbackFn, thisArg)
map()
方法是一个迭代方法。它为数组中的每个元素调用一次提供的 callbackFn
函数,并用结果构建一个新数组。
七、Array.of()
Array.of()
静态方法通过可变数量的参数创建一个新的 Array
实例,而不考虑参数的数量或类型。
语法:
Array.of()
Array.of(element0)
Array.of(element0, element1)
Array.of(element0, element1, /* … ,*/ elementN)
Array.of()
和 Array()
构造函数之间的区别在于对单个参数的处理:Array.of(7)
创建一个具有单个元素 7
的数组,而 Array(7)
创建一个 length
为 7
的空数组(这意味着一个由 7 个空槽组成的数组,而不是由 7 个 undefined
组成的数组)。
八、Array.prototype.pop()
pop()
方法从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度。
语法:
pop()
pop()
方法从一个数组中删除并返回最后一个元素给调用者。如果你在空数组上调用 pop()
,它会返回 undefined
。
九、Array.prototype.push()
push()
方法将指定的元素添加到数组的末尾,并返回新的数组长度。
语法:
push()
push(element0)
push(element0, element1)
push(element0, element1, /* … ,*/ elementN)
push()
方法将值追加到一个数组中。
十、Array.prototype.reverse()
reverse()
方法就地反转数组中的元素,并返回同一数组的引用。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。换句话说,数组中的元素顺序将被翻转,变为与之前相反的方向。
要在不改变原始数组的情况下反转数组中的元素,使用 toReversed()
。
语法:
reverse()
reverse
方法反转数组中元素的位置,改变了数组,并返回该数组的引用。
十一、Array.prototype.shift()
shift()
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
语法:
shift()
shift
方法移除索引为 0 的元素,并将后续元素的下标依次向前移动,然后返回被移除的元素。如果 length
属性的值为 0,则返回 undefined
。
十二、Array.prototype.slice()
slice()
方法返回一个新的数组对象,这一对象是一个由 start
和 end
决定的原数组的浅拷贝(包括 start
,不包括 end
),其中 start
和 end
代表了数组元素的索引。原始数组不会被改变。
语法:
slice()
slice(start)
slice(start, end)
slice()
方法是一个复制方法。它不会改变 this
,而是返回一个浅拷贝,其中包含了原始数组的一部分相同的元素。
十三、Array.prototype.splice()
splice()
方法通过移除或者替换已存在的元素和/或添加新元素就地改变一个数组的内容。
要创建一个删除和/或替换部分内容而不改变原数组的新数组,请使用 toSpliced()
。要访问数组的一部分而不修改它,参见 slice()
。
语法:
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)
splice()
方法是一个修改方法。它可能会更改 this
的内容。如果指定的要插入的元素数量与要删除的元素数量不同,数组的 length
也将会更改。同时,它会使用 @@species
来创建一个新数组实例并返回。
十四、Array.prototype.toLocaleString()
toLocaleString()
方法返回一个字符串,表示数组中的所有元素。每个元素通过调用它们自己的 toLocaleString
方法转换为字符串,并且使用特定于语言环境的字符串(例如逗号“,”)分隔开。
语法:
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)
Array.prototype.toLocaleString
方法遍历数组内容,并使用提供的 locales
和 options
参数调用每个元素的 toLocaleString
方法,通过由实现定义的分隔符(例如逗号“,”)将转换后的字符串拼接起来。请注意,该方法本身不会使用这两个参数——它只是将其传递给每个元素的 toLocaleString()
。分隔符的选择取决于主机当前的语言环境,而不是 locales
参数。
every方法
every()
方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。
every(callbackFn)
every(callbackFn, thisArg)
reduce方法
reduce()
方法对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
reduce(callbackFn)
reduce(callbackFn, initialValue)
callbackFn 返回值将作为下一次调用 callbackFn
时的 accumulator
参数。
initialValue 第一次调用回调时初始化 accumulator
的值。