es6中数组的一些新增扩展?

1|0扩展运算符

通过扩展运算符实现的是浅拷贝,修改了引用指向的值,会同步反映到新数组 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]

2|0构造函数新增的方法

数组新增的方法有如下:

  • Array.from()
  • Array.of()

2|1Array.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]]

2|2Array.of(element0[, element1[, ...[, elementN]]])

参数:

2|3element0:任意个参数,将按顺序成为返回数组中的元素。

1|0返回值:

新的 Array 实例。

Array.of(3, 11, 8) // [3,11,8]

没有参数的时候,返回一个空数组

当参数只有一个的时候,实际上是指定数组的长度

参数个数不少于 2 个时,Array()才会返回由参数组成的新数组

Array() // [] Array(3) // [, , ,] Array(3, 11, 8) // [3, 11, 8]

2|4实例对象新增的方法

entries( ),keys( ),values( ), copyWithin( ),  fill( ),  flat(),flatMap()

1|0entries(),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 }

1|0copyWithin( 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]

1|0fill(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]

1|0 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]

 


__EOF__

本文作者长安
本文链接https://www.cnblogs.com/jingxin01/p/16410288.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   长安·念  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示