一、数组预览图

二、会改变原数组的方法
2.1 push()
- 方法在数组的尾部添加一个或多个元素,并返回数组的长度
参数: item1, item2, …, itemX ,要添加到数组末尾的元素
let arr = [1,2,3]; |
返回值: 数组的长度
2.2 pop()
- 方法删除数组的最后一个元素,减小数组长度并返回它删除的值
//组合使用push()和pop()能够用JavaScript数组实现先进后出的栈 |
返回值: 从数组中删除的元素(当数组为空时返回undefined)。
2.3 unshift()
方法在数组的头部添加一个或多个元素,并将已存在的元素移动到更高索引的位置来获得足够的空间,最后返回数组新的长度
let arr = [3,4,5]; |
返回值: 返回数组新的长度
2.4 shift()
方法删除数组的第一个元素并将其返回,然后把所有随后的元素下移一个位置来填补数组头部的空缺,返回值是删除的元素
let arr = [1,2,3]; |
返回值: 从数组中删除的元素; 如果数组为空则返回undefined
2.5 splice()
方法是在数组中插入或删除元素的通用方法
// start不超过数组长度(以下操作是连续的) |
2.6 sort()
sort()方法将数组中的元素排序并返回排序后的数组
var stringArray = ["Blue", "Humpback", "Beluga"]; |
返回值: 返回排序后的数组。原数组已经被排序后的数组代替
2.7 reverse()
方法将数组中的元素颠倒顺序,返回逆序的数组
let arr = [1,2,3]; |
返回值: 返回顺序颠倒后的数组。原数组已经被排序后的数组代替
2.8 fill()
方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素
arr.fill(value[, start[, end]]) |
value用来填充数组元素的值。start(可选) 起始索引,默认值为0。end(可选) 终止索引,默认值为 this.length。- 如果 start 是个负数, 则开始索引会被自动计算成为
length+start, 其中 length 是 this 对象的length属性值. 如果 end 是个负数, 则结束索引会被自动计算成为length+end
返回值: 修改后的数组
[1, 2, 3].fill(4); // [4, 4, 4] |
三、不改变原数组的方法
3.1 slice()
方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改
- 返回值: 一个含有提取元素的新数组
let arr = [1,2,3,4,5]; |
3.2 join()
方法将数组(或一个类数组对象)中所有元素都转化为字符串并连接在一起,返回最后生成的字符串
- 返回值: 一个所有数组元素连接的字符串。如果 arr.length 为0,则返回空字符串
let num = [1,2,3]; |
// 扁平化简单的二维数组 |
3.3 toString()
方法将数组的每个元素转化为字符串(如有必要将调用元素的
toString()方法)并且输出用逗号分割的字符串列表。返回一个字符串表示数组中的元素
[1,2,3].toString(); // 1,2,3 |
注意: 当数组和字符串操作的时候,js 会调用这个方法将数组自动转换成字符串
[1,2,3]+'abc' //1,2,3abc |
返回值: 返回一个字符串表示数组中的元素
// 扁平化简单的二维数组 |
3.4 toLocaleString()
数组中的元素将使用各自的 toLocaleString 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 “,”)隔开
//数组中的元素将会使用各自的 toLocaleString 方法: |
返回值: 表示数组元素的字符串
3.5 concat()
它的元素包括调用concat()的原始数组的元素和concat()的每个参数,但是要注意,concat()不会递归扁平化数组的数组,concat()也不会修改调用的数组
[1,2,3].concat([4,5,6],[7,8,9]) // [1, 2, 3, 4, 5, 6, 7, 8, 9] |
3.6 isArray()
用于确定传递的值是否是一个 Array
// 下面的函数调用都返回 true |
四、数组遍历、映射、过滤、检测、简化等方法
4.1 forEach()
方法从头到尾遍历数组,为每个元素调用指定的函数
callback为数组中每个元素执行的函数,该函数接收三个参数
// 1、 空元素不遍历,undefined和null是会遍历的。 |
4.2 map()
方法创建一个新数组,其结果是该数组中的每个元素都调用一个callback函数后返回的结果
- 返回值: 一个新数组,每个元素都是回调函数的结果
- 不要用
map代替forEach,map会创建一个新的数组,占用内存。如果你不用map的返回值,那你就应当使用forEach
4.3 filter()
- 方法返回的数组元素是调用的数组的一个子集。传入的函数时用来逻辑判定的,该函数返回 true 或 false,如果返回值为true或能转化为true的值,那么传递给判断函数的元素就是这个子集的成员,它将被添加倒一个作为返回值的数组中
- 返回值: 一个新的通过测试的元素的集合的数组,如果没有通过测试则返回空数组
4.4 every()
方法测试数组的所有元素是否都通过了指定函数的测试。当且仅当针对数组中的所有元素调用判定函数都返回true,它才返回true。
- 空数组上调用every方法,返回 true,因为空数组没有元素,所以空数组中所有元素都符合给定的条件
- 返回值: 一个布尔值,当所有的元素都符合条件才返回true,否则返回false
let arr = [12,34,5,23,44]; |
4.5 some()
方法测试数组中的某些元素是否通过由提供的函数实现的测试。当数组中至少有一个元素调用判定函数返回true,它就返回true,当且仅当数组中的所有元素调用判定函数都返回false,它才返回false
- 空数组调用some,返回false
- 返回值: 只要数组中的任意一个元素在回调函数中返回的是真值,就返回true,否则为false
// 一个简单的例子说明 |
4.6 reduce() 和 reduceRight()
这两个方法使用指定的函数将数组元素进行组合,生成单个值。这在函数式编程中是常见的操作,也可以称为“注入”和“折叠”。reduceRight() 和 reduce() 工作原理是一样的,不同的是reduceRight() 按照数组索引从高到低(从右到左)处理数组,而不是从低到高
- 如果数组为空且没有提供initialValue,会抛出TypeError 。如果数组仅有一个元素(无论位置如何)并且没有提供initialValue, 或者有提供initialValue但是数组为空,那么此唯一值将被返回并且callback不会被执行
- 返回值: 函数累计处理的结果
let arr = [1,2,3,4,5]; |
4.7 indexof()
方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
- 注意:
indexOf使用严格相等(即===)比较searchElement和数组中的元素。而且indexOf()不能识别NaN - 返回值: 首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1
let array = [2, 5, 9]; |
4.8 includes()
方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。 ES7新增
- 返回值: 一个布尔值,根据情况,如果包含则返回 true,否则返回false
[1, 2, 3].includes(2); // true |
4.9 find() 和 findIndex()
find 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。findIndex 方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1
find方法,当某个元素通过 callback 的测试时,返回数组中的一个值,否则返回 undefined。findIndex方法,返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1
// find |
4.10 其他
keys()方法返回一个新的Array迭代器,它包含数组中每个索引的键values()方法返回一个新的Array迭代器,它包含数组中每个索引的值entries()方法返回一个新的Array迭代器,该对象包含数组中每个索引的键/值对