数组方法
Array.from()
从类数组对象或者可迭代对象中创建一个新的数组实例。
1 | // 从类数组对象中创建一个新的数组实例 |
Array.isArray()
Array.isArray() 用于确定传递的值是否是一个 Array。如果对象是 Array,则为true; 否则为false。
1 | function f() { |
Array.of()
根据一组参数来创建新的数组实例,支持任意的参数数量和类型。这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。
1 | Array.of(7); // [7] |
数组实例方法
修改器方法(会改变调用它们的对象自身的值,即改变原数组)
Array.prototype.unshift()
在数组的开头增加一个或多个元素,并返回数组的新长度。
Array.prototype.push()
在数组的末尾增加一个或多个元素,并返回数组的新长度。
Array.prototype.shift()
删除数组的第一个元素,并返回这个元素。
Array.prototype.pop()
删除数组的最后一个元素,并返回这个元素。
Array.prototype.reverse()
颠倒数组中元素的排列顺序,即原先的第一个变为最后一个,原先的最后一个变为第一个。
Array.prototype.sort()
对数组元素进行排序,并返回当前数组。默认排序顺序是根据字符串Unicode码点。如果是对数字排序一般需要重写比较函数
1 | numbers.sort((a, b) => a - b); |
Array.prototype.splice()【容易与slice方法搞混】
通过删除或替换现有元素来修改数组, 并以数组形式返回被修改的内容。此方法会改变原数组。
1 | // 参数: |
访问方法(不改变原数组,只会返回一个新数组或一个其它的期望值)
Array.prototype.includes()
判断当前数组是否包含某指定的值,如果是返回 true,否则返回 false。
Array.prototype.indexOf()
返回数组中第一个与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1。
Array.prototype.lastIndexOf()
返回数组中最后一个(从右边数第一个)与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1。
Array.prototype.join()
连接所有数组元素组成一个字符串。
Array.prototype.concat()
返回一个由当前数组和其它若干个数组或者若干个非数组值组合而成的新数组。
Array.prototype.slice()
截取当前数组中一段元素(左闭右开)[begin,end) 组合成一个新数组并返回。
1 | // 如果参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 |
迭代方法(对数组进行遍历,大部分都需要指定一个回调函数作为参数)
Array.prototype.entries()
返回一个数组迭代器对象,该迭代器会包含所有数组元素的键值对。
Array.prototype.keys()
返回一个数组迭代器对象,该迭代器会包含所有数组元素的键。
Array.prototype.values()
返回一个数组迭代器对象,该迭代器会包含所有数组元素的值。
Array.prototype.find()
找到第一个满足测试函数的元素并返回那个元素的值,如果找不到,则返回 undefined。
Array.prototype.findIndex()
找到第一个满足测试函数的元素并返回那个元素的索引,如果找不到,则返回 -1。
Array.prototype.forEach()
为数组中的每个元素执行一次回调函数。
1 | let arr = [2,4,6,8,10] |
Array.prototype.every()
如果数组中的每个元素都满足测试函数,则返回 true,否则返回 false。空数组也是返回true。
1 | let arr = [1, 30, 39, 29, , 10, 13]; |
Array.prototype.some()
如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false。空数组也是返回false。
1 | let arr = [1, 2, 3, 4, 5]; |
Array.prototype.filter()
将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回。如无任何数组元素通过测试,则返回空数组
1 | let words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; |
Array.prototype.map()
返回一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
1 | let arr = [1, 4, 9, 16]; |
Array.prototype.reduce()
从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值。
1 | // 一、将数组中的值累乘 |
Array.prototype.reduceRight()
同上,不过遍历顺序变成了从右到左
参考文章:
《Array MDN文档》https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array