ECMAScript6 入门 数组的扩展

2023-05-16

 


数组的扩展

1:扩展运算符...

...:好比rest参数的逆运算,将一个数组转换为用逗号分隔的参数序列

主要应用于函数调用,将一个数组,变为参数序列
如果扩展运算符后面是一个空的数组,不会产生任何效果;
当然也可以跟一个表达式,但是表达式的返回值是一个数组;

只有函数调用的时候,扩展运算符才可以放到圆括号当中
(...[1, 2])
// Uncaught SyntaxError: Unexpected number

console.log((...[1, 2]))
// Uncaught SyntaxError: Unexpected number

console.log(...[1, 2])
// 1 2

2:替代函数的apply方法

他可以展开数组,所以不再需要apply方法,将数组转换为函数的参数

3:应用场景

复制数组
const a1 = [1,2]
const a2 = [...a1]
const [...a2] = a1

合并数组
const arr1 = ['a', 'b'];
const arr2 = ['c'];
const arr3 = ['d', 'e'];

// ES5 的合并数组
arr1.concat(arr2, arr3);
// [ 'a', 'b', 'c', 'd', 'e' ]

// ES6 的合并数组
[...arr1, ...arr2, ...arr3]
// [ 'a', 'b', 'c', 'd', 'e' ]

与解构赋值结合
const [first, ...rest] = [1, 2, 3, 4, 5];
first // 1
rest  // [2, 3, 4, 5]

const [first, ...rest] = [];
first // undefined
rest  // []

const [first, ...rest] = ["foo"];
first  // "foo"
rest   // []

如果用于数组的结构赋值,只能放在最后一位
const [...butLast, last] = [1, 2, 3, 4, 5];
// 报错

const [first, ...middle, last] = [1, 2, 3, 4, 5];
// 报错

将字符串转化为数组
[...'hello']
// [ "h", "e", "l", "l", "o" ]

实现 Iterator 接口的对象
任何定义了遍历器(Iterator)接口的对象,都可以用扩展运算符转为真正的数组

4:新的数组API

Array.from()
将类似数组的对象 和 遍历的对象 转为真正的数组

类数组对象
let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};

// ES5的写法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']

// ES6的写法
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']

Array.of() ==> Array.of基本上可以用来替代Array()或new Array()
将一组值,转换为对象
Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1

Array.copyWithin() ==> 接受三个参数,替换的起始位置 读取数据的开始位置 读取数据的结束位置
[1, 2, 3, 4, 5].copyWithin(0, 3)
// [4, 5, 3, 4, 5]
在当前数组内部,将制定位置的成员复制到其他位置(会覆盖原有的成员),会修改原数组

Array.find()
用于找到第一个符合条件的数组成员
直到找到第一个返回值为true的成员,然后返回该成员
否则返回undefined

Array.findIndex()
返回第一个符合条件的数组成员的位置

Array.fill()
使用给定的值填充一个数组

Array.flat()
将一个嵌套的数组,拉平成一个一维数组  

 

转载于:https://www.cnblogs.com/panrui1994/p/9203056.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ECMAScript6 入门 数组的扩展 的相关文章

随机推荐

  • 全网最详保姆级 Kubernetes 应用调试中文指南,专治各种疑难杂症

    公众号关注 奇妙的 Linux 世界 设为 星标 xff0c 每天带你玩转 Linux xff01 现如今已经全面进入了云原生时代 xff0c 不论是从软件架构 开发模式又或者是在部署方式上 xff0c 它们和传统模式相比较而言 xff0c
  • 如何使用手机微信实时查看安防网络摄像头直播?

    随着移动通信设备的普及 xff0c 传统监控如幼儿园 农场 养殖场 交通等信息 xff0c 都开始尝试通过手机微信进行直播 xff0c 实现随时随地 想看就看的需求 xff0c 具体如何实现 xff1f 实现难度如何 xff1f 本文就为大
  • 【米哈游】2022春季校园招聘

    作者 xff1a 咖喱吉吉 链接 xff1a 米哈游 2022春季校园招聘网申开始啦 xff01 校园大使内推 招聘信息 牛客网 来源 xff1a 牛客网 在这里有超多业界顶尖游戏制作大牛 xff0c 等你一起来创作最激动人心的面向未来的产
  • INT,INT32,_int64的范围

    在做游戏的开发中 xff0c 由于游戏运行的时间已经很长 xff0c 数据量非常大 xff0c 在内网测试 xff0c 怎么测都没有问题 xff0c 可是到外网就是时不时的挂了 xff0c 后来打log才看出问题 是我的int类型范围设置小
  • 内存分配函数

    1 malloc 函数 xff1a void malloc unsigned int size 在内存的动态分配区域中分配一个长度为size的连续空间 xff0c 如果分配成功 xff0c 则返回所分配内存空间的首地址 xff0c 否则返回
  • ORB_SLAM2+realsense运行稠密建图

    具体的环境及其细节 xff1a Ubuntu18 04 realsenseD435i ROS orbslam2 echo gou的博客 CSDN博客 下载代码 xff1a https github com gaoxiang12 ORBSLA
  • catkin_make学习总结

    catkin make学习总结 基础概念常用函数理解与注释其他有用的函数总结简单实例参考链接 基础概念 CMakeLists txt 文件中 xff0c 命令名字是不区分大小写的 xff0c 而参数和变量是大小写相关的ros的包 catki
  • 新手如何使用立创EDA完成电路设计

    软件简介 xff1a 立创EDA是一款基于浏览器的免费国产EDA绘图工具 下载方式 xff1a 百度 立创EDA 进入主页 xff0c 或主页点击 下载 客户端 xff0c 支持Wndows Luixus Mac系统下载安装 首先 xff0
  • Echart、Excel、highcharts、jfreechart对比

    Echart Excel highcharts jfreechart 柱状图 条形图 折线图 面积图 散点图 气泡图 K 线图 饼图 环形图 雷达图 力导布局图 和弦图 曲面图 地图
  • HAL库和标准库的区别

    本文回答来源于chat gpt4 xff0c 非原创 xff0c 也是我初学过程中所遇到的问题 xff0c 答案分享给大家 xff0c 如有侵权请联系删除 xff1a HAL 库 xff08 Hardware Abstraction Lay
  • 原来手机就能直接制作证件照,我也才知道,再也不用去照相馆了

    证件照选相信是我们大家日常所需 xff0c 但是去照相馆真的有点麻烦 xff0c 尤其是有时候仅仅只是需要换一个背景颜色 xff0c 其实不用这么麻烦 xff0c 现在手机上不仅能换背景颜色 xff0c 还能制作证件照 xff0c 还很简单
  • RTK基站 差分云共享技术,全套高精度定位解决方案

    针对区域内多个移动体高精度定位的需求 xff0c 为了最大程度的降低成本 xff0c FDISYSTEMS为DETA100系列具有联网功能的产品提供了免费的差分共享技术 xff0c 通过该技术可以将单一运载体从CORS服务器获取的差分修正R
  • STM32 Keil编程常见问题解决办法:(一)多行注释时出现红色下划线

    Problem xff1a 在STM32 Keil软件中进行多行注释时出现下图所示现象 xff0c 部分语句出现红色下划线 Solution xff1a 点击Keil软件上的小扳手 选择Text Completion 勾选ENTER TAB
  • 2017秋招求职历程总结

    2017秋招求职历程总结 从小的梦想就是有朝一日能够进入汽车行业工作 xff0c 很幸运刚毕业的第一份工作便实现了此梦想 xff0c 感谢大学遇到的那些人 终于在国庆之前拿到了一份还算满意的offer 9月1号从实习单位离职准备接下来的秋招
  • Win10常用命令:定时关机(shutdown命令)

    文章目录 一 单次 定时关机 xff1a Win 43 R 输入命令 xff1a 二 shutdown命令参数三 每天定时关机 一 单次 定时关机 xff1a Win 43 R 输入命令 xff1a 倒计时关机 xff1a shutdown
  • 如何实现超大文件(60G)传输给别人?

    2022 4 25 今天Ken问我要我工位上的一个虚拟机环境 xff0c 整个文件夹拷给他 但是这个CentOS的环境有60个G xff0c 我的U盘只有45G 想了几个办法 xff1a 压缩包 xff1a 用WinRAR压缩成压缩包 xf
  • CPU两大架构:X86与ARM的区别

    1 CPU 架构 Central Processing Unit Architecture X86 ARM MIPS PowerPC IA64 AMD64 x86 64 x64 是64位的CPU架构 区分ARM64 2 复杂指令集计算机CI
  • Linux(UOS、Ubuntu)虚拟机和Windows物理机之间无法复制粘贴

    我的UOS虚拟机和主机之间无法复制粘贴 xff0c 解决方案如下 xff1a 1 先更新一下软件列表 span class token function sudo span span class token function apt get
  • CMake、CMakeLists.txt

    2022 06 02 xff0c 今天开始研究cmake 不间断更新 一 说明 0 官方文档网址 xff1a www cmake org 1 cmake的定义 xff1a 高级编译配置工具 当多个人用不同的语言或者编译器开发一个项目 xff
  • ECMAScript6 入门 数组的扩展

    数组的扩展 1 xff1a 扩展运算符 xff1a 好比rest参数的逆运算 xff0c 将一个数组转换为用逗号分隔的参数序列 主要应用于函数调用 xff0c 将一个数组 xff0c 变为参数序列 如果扩展运算符后面是一个空的数组 xff0