当前位置:网站首页>扩展运算符和剩余参数rest
扩展运算符和剩余参数rest
2022-08-11 05:17:00 【-加油】
扩展运算符
1、将数组转换为逗号分隔的参数序列
let boys = ['王俊凯','王源','易烊千玺']
function fun(){
console.log(arguments);
}
fun(boys);//[Arguments] { '0': [ '王俊凯', '王源', '易烊千玺' ] }
fun(...boys);//[Arguments] { '0': '王俊凯', '1': '王源', '2': '易烊千玺' }
fun('王俊凯','王源','易烊千玺')//[Arguments] { '0': '王俊凯', '1': '王源', '2': '易烊千玺' }
let a = [15,10,2,3,4,]
console.log(Math.max(...a));//15
console.log(Math.min(...a));//2
console.log(Math.max.apply(null,a));//15
console.log(Math.min.apply(null,a));//2
console.log(Math.max(a));//NAN
console.log(Math. min(a));//NAN
2、数组合并
let boy1 = ['王俊凯','王源']
let boy2 = ['易烊千玺']
let boys = [...boy1,...boy2]
console.log(boys);
3、数组拷贝
let boys = ['王俊凯','王源','易烊千玺']
//数组元素里面为简单数据类型
let boysCopy1 = [...boys]
console.log(boysCopy1);//[ '王俊凯', '王源', '易烊千玺' ]
boysCopy1.push('tfboys')
//不会改变boys的值
console.log(boysCopy1);//[ '王俊凯', '王源', '易烊千玺', 'tfboys' ]
console.log(boys);//[ '王俊凯', '王源', '易烊千玺' ]
//另外两种数组拷贝的方法 同理修改boysCopy2、boysCopy3不会影响到boys
let boysCopy2 = boys.slice()
console.log(boysCopy2);//[ '王俊凯', '王源', '易烊千玺' ]
let boysCopy3 = Array.from(boys)
console.log(boysCopy3);//[ '王俊凯', '王源', '易烊千玺' ]
数组深浅拷贝:
//把数组里面的元素改为引用类型 这样后两个变量的指向是同一个地址
let boys = [ {
boy1:'王俊凯'},{
boy2:'王源'},{
boy3:'易烊千玺'}]
let boysCopy = [...boys]
console.log(boys)//[ { boy1: '王俊凯' }, { boy2: '王源' }, { boy3: '易烊千玺' } ]
console.log(boysCopy)//[ { boy1: '王俊凯' }, { boy2: '王源' }, { boy3: '易烊千玺' } ]
boysCopy[0].boy1 = '庄文杰'
//浅拷贝 boys的值一起被修改了
console.log(boysCopy);//[ { boy1: '庄文杰' }, { boy2: '王源' }, { boy3: '易烊千玺' } ]
console.log(boys)//[ { boy1: '庄文杰' }, { boy2: '王源' }, { boy3: '易烊千玺' } ]
实现深拷贝:
//实现深拷贝:
let tfboys = [ {
boy1:'王俊凯'},{
boy2:'王源'},{
boy3:'易烊千玺'}]
//JSON.stringify把js对象变为json字符串 JSON.parse再转为js对象 这是全新的js对象
//数组的map、filter、reduce等方法会造成浅拷贝,可以用json来解决。json还可以解决object的深拷贝
//json方法缺点:有些类型的值是不支持的,
let tfboysCopy = JSON.parse(JSON.stringify(tfboys))
tfboysCopy[0].boy1 = '庄文杰'
//深拷贝 不会影响原数组
console.log(tfboysCopy);//[ { boy1: '庄文杰' }, { boy2: '王源' }, { boy3: '易烊千玺' } ]
console.log(tfboys);//[ { boy1: '王俊凯' }, { boy2: '王源' }, { boy3: '易烊千玺' } ]
4、将伪数组转为真正的数组
<body>
<div></div>
<div></div>
<div></div>
<script>
const divs = document.querySelectorAll('div');
const divArr = [...divs];
console.log(divArr);
</script>
</body>
剩余参数rest
function data(){
console.log(arguments);//对象
//{ '0': '大哥', '1': '二哥', '2': '三哥', '3': '四哥' }
}
data("大哥","二哥","三哥","四哥");
ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments 。
function Data(...args){
console.log(args);//数组 [ '大哥', '二哥', '三哥', '四哥' ]
//这样就可以使用 数组的方法
}
Data("大哥","二哥","三哥","四哥");
含有其他参数 rest参数必须放在最后面
//剩余参数
function fun(a,b,...args){
console.log(a,b);// 大哥 二个哥
console.log(args);//数组 [ '三哥', '四哥' ]
}
fun("大哥","二哥","三哥","四哥")
边栏推荐
猜你喜欢

(3) How Redis performs stress testing

flask框架学习:debug与配置项

npm install 时报 npm ERR Cannot read properties of null (reading ‘pickAlgorithm‘)

06-引入Express创建web服务器、接口封装并使用postman测试,静态资源托管

二、Jmeter 核心配置文件

C语言结构体详解 (2) 结构体内存对齐,默认对齐数

05-JS中的BOM和DOM

07-JS事件:事件类型、事件对象、事件传播、事件委托

Redis - Data Types (Basic Instructions, String, List, Set, Hash, ZSet, BitMaps, HyperLogLog, GeoSpatial) / Publish and Subscribe

【转载】如何理解数据集中【训练集】、【验证集】和【测试集】
随机推荐
(1) Construction of a real-time performance monitoring platform (Grafana+Influxdb+Jmeter)
npm install 时报 npm ERR Cannot read properties of null (reading ‘pickAlgorithm‘)
C语言——文件操作(2)文件的读写操作
QtDataVisualization 数据3D可视化
ClionIDE compiles by specifying the compiler
Markdown 常用到的一些编写技巧
LeetCode43. String multiplication (this method can be used to multiply large numbers)
(2) Construction of a real-time performance monitoring platform (Grafana+Prometheus+Jmeter)
(1) Docker installs Redis in practice (one master, two slaves, three sentinels)
Chapter 4 Composite Types-1
在项目中使用flex布局的justify-content:space-around;遇到的问题,(数量为单数)
看完这篇博客之后,含着泪学会了TCP/IP
Flask框架学习:模板继承
uniapp获取用户信息(登录及个人中心页面的实现)
性能效率测试
vftpd本地可以连接,远程连接超时的解决
一、Jmeter环境部署
第13章 类的继承-1
[C language from elementary to advanced] Part 1 Initial C language (1)
第二篇 DS5 Armv8 样例工程报错之GCC编译