数组的创建
1 2 3 4
| var arrayObj = []; var arrayObj = new Array(); var arrayObj = new Array([size]); var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]);
|
数组的添加
push()
方法将一个或多个新元素添加到数组结尾,并返回数组新长度,数组不变
1 2 3
| var arr = [1] console.log(arr.push(2)) console.log(arr)
|
unshift()
方法将一个或多个新元素添加到数组头部,并返回数组新长度,数组不变
1 2 3
| var arr = [1] console.log(arr.unshift(2)) console.log(arr)
|
splice()
将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回””。
1 2 3 4 5 6 7
| var arr = [1, 2, 3, 4, 5] arr.splice(2, 0, 'insert') console.log(arr)
var newArr = [1, 2, 3, 4, 5] newArr.splice(2, 1, 'insert') console.log(newArr)
|
数组的删除
pop()
移除最后一个元素并返回该元素值
shift()
移除最前一个元素并返回该元素值,数组中元素自动前移
splice(deletePos,deleteCount)
删除从指定位置 deletePos 开始的指定数量 deleteCount 的元素,数组形式返回所移除的元素
数组的截取和合并
concat()
将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
1 2 3
| var a = [1] var b = [2] a.concat(b)
|
slice(start, [end])
以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
数组的拷贝
1 2
| arrayObj.slice(0) arrayObj.concat()
|
数组元素的排序
1 2
| arrayObj.reverse() arrayObj.sort()
|
数组元素的字符串化
join()
方法是一个非常实用的方法,它把当前 Array 的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:
1 2 3
| arrayObj.join(separator) var arr = ['A', 'B', 'C', 1, 2, 3] arr.join('-')
|
数组的查找
- indexOf()
- lastIndexOf()
find()
方法,用于找出第一个符合条件的数组成员
find 方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。
1 2 3
| ;[1, 5, 10, 15].find(function(value, index, arr) { return value > 9 })
|
findIndex()
返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
1 2 3
| ;[1, 5, 10, 15].findIndex(function(value, index, arr) { return value > 9 })
|
判断是否为数组
数组迭代
filter()
使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。
1 2 3 4 5
| function isBigEnough(element) { return element >= 10 } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough)
|
forEach()
让数组的每一项都执行一次给定的函数。
1 2 3 4 5 6 7 8
| function logArrayElements(element, index, array) { console.log('a[' + index + '] = ' + element) } ;[2, 5, 9].forEach(logArrayElements)
|
every()
测试数组的所有元素是否都通过了指定函数的测试。
1 2 3 4 5 6 7 8
| function isBigEnough(element, index, array) { return element >= 10 } var passed = [12, 5, 8, 130, 44].every(isBigEnough)
passed = [12, 54, 18, 130, 44].every(isBigEnough)
|
map()
返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。
1 2 3 4
| const arr = [1, 2, 3] arr.map((item, index) => { console.log(item) })
|
some()
测试数组中的某些元素是否通过了指定函数的测试。
1 2 3 4 5 6 7 8
| function isBigEnough(element, index, array) { return element >= 10 } var passed = [2, 5, 8, 1, 4].some(isBigEnough)
passed = [12, 5, 8, 1, 4].some(isBigEnough)
|
reduce()
接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。
语法: arr.reduce(callback,[initialValue]) callback:执行数组中每个值的函数,包含四个参数
previousValue
上一次调用回调返回的值,或者是提供的初始值(initialValue)
currentValue
数组中当前被处理的元素
index
当前元素在数组中的索引
array
调用 reduce 的数组 initialValue: 作为第一次调用 callback 的第一个参数。
1 2 3 4
| var total = [0, 1, 2, 3].reduce(function(a, b) { return a + b })
|
Array.from()
用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。
1 2 3 4 5 6 7 8 9
| let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }
let arr2 = Array.from(arrayLike)
|
Array.of()
方法用于将一组值,转换为数组。
1 2 3
| Array.of(3, 11, 8) Array.of(3) Array.of(3).length
|
fill()
方法使用给定值,填充一个数组。
1 2 3 4
| ;['a', 'b', 'c'].fill(7)
new Array(3).fill(7)
|
fill
方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。
1 2
| ;['a', 'b', 'c'].fill(7, 1, 2)
|
遍历数组
·keys()`是对键名的遍历
1 2 3 4 5
| for (let index of ['a', 'b'].keys()) { console.log(index) }
|
values()
是对键值的遍历
1 2 3 4 5
| for (let elem of ['a', 'b'].values()) { console.log(elem) }
|
1 2 3 4 5
| for (let [index, elem] of ['a', 'b'].entries()) { console.log(index, elem) }
|