【Wechat_MiniProgram_JS】拓展运算符——`...`JavaScript运算符?

拓展运算符...

**… 运算符,是 ES6 里一个新引入的运算符,也叫展开运算符,**我们每天都要和它打交道。
简而言之就是,… 运算符可以展开一个可迭代对象中的所有项。
可迭代的对象一般是指可以被循环的,包括:string, array, set 等等。

基础用法

基础用法:展开

 const a = [2, 3, 4]const b = [1, ...a, 5]b; // [1, 2, 3, 4, 5]

基础用法:收集

function foo(a, b, ...c) {console.log(a, b, c)     
}
foo(1, 2, 3, 4, 5); // 1, 2, [3, 4, 5]

如果没有命名参数的话,… 就会收集所有的参数:

function foo(...args) {console.log(args)     
}
foo(1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]

这个运算符一定是在最后一个参数的位置,也很好理解,就是“收集前面剩下的参数”。
如果不在最后一位,会报错。
不得不感叹,这个运算符设计的真的是妙,可展开,可收集,收放自如,当真好用。

基础用法:把类数组转换为数组

什么是类数组?
类数组和数组非常接近,都可以拥有一系列元素,也有length 属性,最大的不同是:
类数组不具备数组的一系列方法。
举个栗子:

const nodeList = document.getElementsByClassName("test");
const array = [...nodeList];console.log(nodeList); //Result: HTMLCollection [ div.test, div.test ]
console.log(array); //Result: Array [ div.test, div.test ]

使用 … 就可以实现类数组到数组的转换,转换之后,就可以使用数组的各种方法了。
你还记得在这个操作符出来之前是如何转换的吗?
这个问题还是头条的一个前端面试题。
例如:

// ES5 时代
function bar() {var args = Array.prototype.slice.call(arguments);// 调用push 加几个元素args.push(1, 2, 3);// 把args 作为参数传递给foofoo.apply(null, args)
}
// ES6 时代
function foo(...args) { // 搜集参数到 argsargs.push(4, 5, 6)console.log(...args) // 展开args
}
bar(0); // 0 1 2 3 4 5 6

基础用法:增加元素或属性

1 为数组新增成员
const pokemon = ['KK', 'Peter'];
const charmander = '郑伊健';
const pokedex = [...pokemon, charmander];
console.log(pokedex); 

输出结果为[ 'KK', 'Peter', '郑伊健' ]

2 为对象新增属性
const basicSquirtle = { name: 'Squirtle', type: 'Water' };
const fullSquirtle = {...basicSquirtle,species: 'Tiny Turtle',evolution: 'Wartortle'
};
console.log(fullSquirtle); 

输出结果为{ name: 'Squirtle', type: 'Water', species: 'Tiny Turtle', evolution: 'Wartortle' }

6.基础用法:合并数组/对象

1 合并数组
const pokemon = ['Squirtle', 'Bulbasur', 'Charmander'];
const morePokemon = ['Totodile', 'Chikorita', 'Cyndaquil'];
const pokedex = [...pokemon, ...morePokemon];
console.log(pokedex);   
//  ['Squirtle', 'Bulbasur', 'Charmander', 'Totodile', 'Chikorita', 'Cyndaquil']

输出结果为[ 'Squirtle', 'Bulbasur', 'Charmander', 'Totodile', 'Chikorita', 'Cyndaquil' ]
对象数组也一样:

const pokemon = [{ name: 'Squirtle', type: 'Water' },{ name: 'Bulbasur', type: 'Plant' }
];
const morePokemon = [{ name: 'Charmander', type: 'Fire' }];
const pokedex = [...pokemon, ...morePokemon];
console.log(pokedex); 

输出结果为 [ { name: 'Squirtle', type: 'Water' }, { name: 'Bulbasur', type: 'Plant' }, { name: 'Charmander', type: 'Fire' } ]

作者:前端辉羽 来源:简书链接:

2 合并对象
const baseSquirtle = {name: 'Squirtle',type: 'Water'
};
const squirtleDetails = {species: 'Tiny Turtle Pokemon',evolution: 'Wartortle'
};
const squirtle = { ...baseSquirtle, ...squirtleDetails };
console.log(squirtle); 
//{ name: 'Squirtle', type: 'Water', species: 'Tiny Turtle Pokemon', evolution: 'Wartortle' }

拓展运算符...进阶用法地址:拓展运算符详解 https://www.jianshu.com/p/c207e2601159

应用场景

  • 合并数组
  • 与解构赋值结合
  • 函数返回值
  • 字符串( 扩展运算符还可以将字符串转为真正的数组)

  • 拷贝数组对象

  • 合并数组

  • 参数传递

  • 数组去重

  • 字符串转字符数组

  • NodeList转数组

  • 解构变量

  • 打印日志(打印迭代对象)

    其他使用说明其他应用场景使用说明

·合并数组


const halfMonths1 = [1, 2, 3, 4, 5, 6]; 
const halfMonths2 = [7, 8, 9, 10, 11, 12];const allMonths = [...halfMonths1, ...halfMonths2];   //  合并数组操作-拓展运算符
console.log(allMonths); // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]

合并对象,在合并对象时,如果一个键已经存在,它会被具有相同键的最后一个对象替换


const time1 = {month: 7,day: {value: 1,},
};
const time2 = {year: 2021,month: 8,day: {value: 10,},
};
const time = { ...time1, ...time2 };
console.log(time); // { month: 8, day: { value: 10 }, year: 2021 }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文解释Linux的内存分页管理

内存是计算机的主存储器。内存为进程开辟出进程空间,让进程在其中保存数据。我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存和内存分页的概念。 内存 简单地说,内存就是一个数据货架。内存有一个最小的存储…

书客、孩视宝、明基护眼台灯好不好用?护眼灯测评对比!

现在一些家长对自家孩子的健康也是特别的重视,从小时开始的儿童枕;再到保护眼睛的护眼台灯、OK眼镜;再到青少年时期的生长激素...可以说是穷出不尽,但是关于孩子使用的东西又不能马虎,每次要帮孩子选东西的时候可是一阵…

四川思维跳动商务信息咨询有限公司电商服务怎么样

随着电商行业的迅猛发展,越来越多的企业开始寻求专业的电商服务以提升自身竞争力。四川思维跳动商务信息咨询有限公司作为一家专注于电商服务的公司,凭借其卓越的服务品质和创新能力,已经在业内树立了良好的口碑。本文将为您详细解析四川思维…

办公宝典:兼具多功能的4大办公软件app推荐!

现在,随着全球化和互联网的发展,团队协作成为企业成功的关键所在。在这个环境中,协同办公软件成为无法离开的工具。 在市面上,有很多种协同办公软件可供选择。这里介绍4款与协同办公密切相关的软件,它们提供了许多功能…

Pendulum详解2——Pendulum高级应用 - 精通时间的玩法

目录 写在开头1.简单回顾2. 时间周期和区间2.1 处理时间周期2.2 时间区间的处理2.3 实际场景案例2.4 复杂周期的处理2.5 区间计算中的时区考虑3. 时间格式本地化3.1 解释多地区的本地化支持3.2 演示国际化灵活性3.3 处理不同语言和习惯4. 时间迭代4.1 Pendulum的时间迭代方法4.…

C#基础:字段的初始化、继承

一、字段的初始化 class Test {static int Main(string[] args){var list new List<Calculate>();//1.Calculate中加入abvar calculate new Calculate { a 2, b 3 };//2.Calculate中加入Value列表calculate.Values.Add(new Value { id 1, value 6 });calculate.Va…

【操作系统】输入输出系统

6.1 I/O系统的功能、模型和接口 I/O系统管理的主要对象是I/O设备和相应的设备控制器。其最主要的任务是&#xff0c;完成用户提出的I/O请求&#xff0c;提高I/O速率&#xff0c;以及提高设备的利用率&#xff0c;并能为更高层的进程方便地使用这些设备提供手段。 6.1.1 I/O系…

Ubuntu 22.04/20.04 安装 SSH

OpenSSH 是安全远程通信的重要工具&#xff0c;提供了一种安全的方式来访问和管理服务器。对于那些计划在 Ubuntu 22.04 Jammy Jellyfish 或其较旧的稳定版本的 Ubuntu 20.04 Focal Fossa 上安装 SSH 并启用它的人来说&#xff0c;了解其功能和优势至关重要。 OpenSSH的主要特…

vLLM部署推理及相关重要参数

部署示例代码 from vllm import LLM, SamplingParamsprompts ["Hello, my name is","The president of the United States is","The capital of France is","The future of AI is", ] sampling_params SamplingParams(temperature0…

技术学习|CDA level I 描述性统计分析(数据的描述性统计分析)

技术学习|CDA level I 描述性统计分析&#xff08;数据的描述性统计分析&#xff09; 数据的描述性统计分析常从数据的集中趋势、离散程度和分布形态3个方面进行。 一、集中趋势 集中趋势是指数据向其中心值靠拢的趋势。测量数据的集中趋势&#xff0c;主要是寻找其中心值。…

python延迟绑定是什么?

延迟绑定是什么&#xff1f; Python中的延迟绑定是指在嵌套函数中&#xff0c;内部函数在被调用时才会绑定外部函数的变量&#xff0c;而不是在定义内部函数时就绑定。这种绑定方式可以导致一些出乎意料的行为&#xff0c;因为变量的值是在函数调用时决定的&#xff0c;而不是…

修改选择框el-select样式,显示及下拉样式

修改选择框el-select样式,显示及下拉样式 .el-input__inner {background: rgba(25, 126, 195, 0.2);border: none;color: #fff; }.el-select-dropdown {background: rgba(19, 73, 104, 0.79);border: 2px solid #48e3ff;border-radius: 0; }.el-popper .popper__arrow {display…

了解JavaScript中的语句

前言 前面我们学习了JavaScript中的变量、操作符等&#xff0c;本篇内容讲解JavaScript中的语句&#xff0c;只有了解了语句的使用&#xff0c;才能正式开发出一个完整的功能。 一、if语句 if语句是实际开发中使用最多的语句之一&#xff0c;具体语法如下 if(条件) 语句1 el…

VUE局部组件

实现局部组件的注册功能&#xff0c;样例如下 代码如下 <html><head><meta charset"utf-8"><title></title></head><body><div id"app"><hello-word></hello-word><hello-tom></he…

通信及信号处理领域期刊影响因子、分区及期刊推荐-2024版

期刊名IF(202401)中科院分区(20231227)备注IEEE Journal on Selected Areas in Communications16.4计算机科学1区Top通信顶刊IEEE Transactions on Signal Processing5.4工程技术2区Top信号处理顶刊IEEE Transactions on Information Theory2.5计算机科学3区信息论顶刊IEEE Tra…

多个微信的朋友圈如何高效管理?

大家都知道&#xff0c;在当今社交媒体盛行的时代&#xff0c;微信朋友圈已成为了我们交流和分享生活的重要平台。但是&#xff0c;对于那些同时管理多个微信号的人来说&#xff0c;如何高效省时地管理这些账号的朋友圈就成了一项挑战。 今天我将分享一个神奇的微信管理工具&a…

vue项目获取 iframe 中的DOM元素

注意&#xff0c;由于跨域的安全限制&#xff0c;只能访问同源的 iframe 内容。如果 iframe 的源与父组件的源不同&#xff0c;那么在访问其内容时可能会遇到跨域错误。 <template><div><iframe ref"myIframe" src"https://example.com" lo…

内存的基础知识-第四十天

目录 什么是内存&#xff1f;内存的作用 常用的数量单位 指令的工作原理 思考 三种装入方式 绝对装入 可重定位装入&#xff08;静态重定位&#xff09; 动态运行时装入&#xff08;动态重定位&#xff09; 写程序到程序运行 编译和链接 链接的三种方式 本节思维导…

达梦数据:数字化时代,国产数据库第一股终于到来?

又是新的一年开始。回首一年前的此时&#xff0c;在大家千呼万唤地期待中&#xff0c;数据基础制度体系的纲领性文件正式发布。 时隔一年之后&#xff0c;数据资源入表如约而至。2024年1月1日《企业数据资源相关会计处理暂行规定》正式施行&#xff0c;各行各业海量数据巨大的…

Fiddler工具 — 6.Fiddler页面布局之工具栏

Fiddler工具栏就是平时比较常用功能的一个快捷方式。 下面一一说明&#xff1a; 1、第一组工具&#xff1a; WinConfig&#xff1a;可以在里面配置一些windows系统的应用程序&#xff0c;配置在里面的应用的请求Fiddler都可以抓到&#xff0c;Fiddler5新增功能。 换句话说&…