es6中数组的一些新增扩展?
作者:互联网
扩展运算符
通过扩展运算符实现的是浅拷贝,修改了引用指向的值,会同步反映到新数组
var arr=[1,2]
var arr1=[3,4]
console.log([...arr,...arr1]);// [1, 2, 3, 4]
解构
const [a,...b]=[1,2,3,4]
console.log(a);//1
console.log(b);//[2,3,4]
构造函数新增的方法
数组新增的方法有如下:
- Array.from()
- Array.of()
Array.from(arrayLike[, mapFn[, thisArg]])
参数:
arrayLike
想要转换成数组的伪数组对象或可迭代对象。
mapFn
(可选) 如果指定了该参数,新数组中的每个元素会执行该回调函数。
thisArg
(可选) 可选参数,执行回调函数 mapFn
时 this
对象。
返回值:
一个新的浅拷贝的数组实例。
let arr=Array.from('cads')
console.log(arr);//['c', 'a', 'd', 's']
let arr=Array.from([1,2,3],x=>x+4)
console.log(arr);//[5, 6, 7]
let set=new Set([0,1,2,3])
console.log(set);//{0, 1, 2, 3}
console.log(Array.from(set));// [0, 1, 2, 3]
let map=new Map([[0,1],[2,3]])
console.log(map);//{0 => 1, 2 => 3}
console.log(Array.from(map));// [[0,1],[2,3]]
Array.of(element0[, element1[, ...[, elementN]]])
参数:
element0
:任意个参数,将按顺序成为返回数组中的元素。
返回值:
新的 Array 实例。
Array.of(3, 11, 8) // [3,11,8]
没有参数的时候,返回一个空数组
当参数只有一个的时候,实际上是指定数组的长度
参数个数不少于 2 个时,Array()
才会返回由参数组成的新数组
Array() // []
Array(3) // [, , ,]
Array(3, 11, 8) // [3, 11, 8]
实例对象新增的方法
entries( ),keys( ),values( ), copyWithin( ), fill( ), flat(),flatMap()
entries(),keys(),values()
keys()
是对键名的遍历、values()
是对键值的遍历,entries()
是对键值对的遍历
let obj=[{a:3},{b:4}]
for (let index of obj.keys()) {
console.log(index);//0 1
}
for (let item of obj.values()) {
console.log(item);//{a:3} {b:4}
}
for (let [index,item]of obj.entries()) {
console.log(item);//{a:3} {b:4}
console.log(index);//0 1
}
copyWithin( target,[start,[end])
将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组
参数:
target:从该位置开始替换数据。如果为负值,表示倒数。
start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。
[1, 2, 3, 4, 5].copyWithin(0, 3) // 将从 3 号位直到数组结束的成员(4 和 5),复制到从 0 号位开始的位置,结果覆盖了原来的 1 和 2
// [4, 5, 3, 4, 5]
fill(element,[start,[end])
使用给定值,填充一个数组,原数组改变
var a=[1,2,3,4]
let b=a.fill(5)
console.log(b);//[5, 5, 5, 5]
let c=a.fill(6,2)
console.log(c);//[5, 5, 6, 6]
console.log(a);
let d=a.fill(8,1,2)
console.log(d);//[5, 8, 6, 6]
flat(),flatMap()
将数组扁平化处理,返回一个新数组,对原数据没有影响
var a=[1,2,[3,4,[5,6]]]
console.log(a.flat());//[1, 2, 3, 4, [5,6]]
console.log(a.flat().flat());//[1, 2, 3, 4, 5, 6]
console.log(a.flat(2));//[1, 2, 3, 4, 5, 6]
flatMap()
方法对原数组的每个成员执行一个函数相当于执行Array.prototype.map()
,然后对返回值组成的数组执行flat()
方法。该方法返回一个新数组,不改变原数组
// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]
标签:es6,console,log,flat,扩展,let,数组,Array 来源: https://www.cnblogs.com/jingxin01/p/16410288.html