ES6
对数组也进行了一些扩展,不过很多东西我觉得平时不太常用,就粗略的了解一下。
console.log(...[1, 2, 3])
function sum(a, b) {
return a + b
}
sum(...[1, 2])
const arr1 = [1, 2]
const arr2 = [...arr1]
const arr3 = [...arr1, ...arr2]
const [a, ...b] = [1, 2, 3]
console.log(a)
console.log(b)
const [x, ...y, z] = [1, 2, 3]
const strArr = [...'郭德纲']
console.log(strArr)
Array.from()
将类数组对象或可迭代对象转化为数组。
console.log(Array.from([1, 2]))
console.log(Array.from([1, , 2]))
const arrLike = {
'0': 1,
'1': 2,
length: 2
}
console.log(Array.from(arrLike))
console.log(Array.from(arrLike, item => item * 2))
console.log(Array.from({length: 2}, () => 'a'))
console.log(Array.of())
console.log(Array.of(1, 2, 3))
console.log(Array.of(undefined))
- 实例方法
find()
和findIndex()
– 数组实例的find
方法,用于找出第一个符合条件的数组成员
– 数组实例的findIndex
方法,返回第一个符合条件的数组成员的位置
const target = ['a', 'b', 'c'].find(item => item === 'b')
console.log(target)
const targetIndex = ['a', 'b', 'c'].findIndex(item => item === 'b')
console.log(targetIndex)
['a', 'b', 'c'].find((item, index, arr) => {
if (item === 'b') {
console.log(item, index, arr)
}
})
function func(item) {
return item > this.age
}
const person = { age: 18 }
console.log([16, 17, 18, 19, 20].find(func, person))
- 实例方法
fill()
使用给定值填充一个数组。可接收三个参数,第一个表示给定值,第二个表示替换起始位置,第三个表示替换结束位置
console.log(['a', 'b', 'c'].fill(1))
console.log(new Array(3).fill(1))
console.log(['a', 'b', 'c', 'd'].fill(7, 1, 3))
const arr1 = new Array(3).fill({ name: '郭德纲' })
arr1[0].name = '岳云鹏'
console.log(JSON.stringify(arr1))
const arr2 = new Array(3).fill([])
arr2[0].push(1)
console.log(JSON.stringify(arr2))
- 实例方法
entries()
,keys()
和values()
– keys
返回一个键名的遍历器对象
– values
返回一个键值的遍历器对象
– entries
返回一个键值对的遍历器对象
const arr = ['a', 'b', 'c']
for(let key of arr.keys()) {
console.log(key)
}
for(let value of arr.values()) {
console.log(value)
}
for (let entry of arr.entries()) {
console.log(entry)
}
- 实例方法
includes()
– 判断数组上是否包含给定值。
– 第一个参数为需要判断的值。
– 第二个参数为搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。
console.log([1, 2, 3].includes(2))
console.log([1, 2, 3].includes(4))
console.log([1, 2, NaN].includes(NaN))
console.log([1, 2, 3].includes(1, 1))
- 实例方法
flat()
和flatMap()
– 将多维数组拉平
console.log([1, 2, [3, 4]].flat())
console.log([1, 2, [3, [4, 5]]].flat())
console.log([1, 2, [3, [4, 5]]].flat(1))
console.log([1, 2, [3, [4, 5]]].flat(2))
console.log([1, 2, [3, [4, [5, 6]]]].flat(Infinity))
console.log([1, 2, 3].flatMap(item => [item, item * 2]))
- 实例方法
at()
– at
方法接受一个整数作为参数,返回对应位置的成员,支持负索引
– 如果参数位置超出了数组范围,at
返回undefined
const arr = [1, 2, 3, 4, 5]
console.log(arr.at(1))
console.log(arr.at(-1))
console.log(arr.at(6))
console.log(arr.at(-6))
console.log([,,,].length)
console.log(0 in [undefined, undefined, undefined])
console.log(0 in [,,,])
console.log([1,,2])