这篇文章是由原作者Chris Bongers授权翻译的。
可以使用部署操作符复制
复制数组
数组,但请注意这是一个浅拷贝。constar R1=[ 1,2,3 ];
constarr2=[.arr1];
控制台日志(arr 2;
//[ 1,2,3 ]
现在可以复制基本数组了。 请注意,不适用于具有多级数组、日期或函数的数组。
合并数组
假设您想将两个数组合并为一个。 以前可以使用concat方法,但现在可以使用展开操作符。constar R1=[ 1,2,3 ];
康斯塔R2=[ 4,5,6 ];
constarr3=[.arr1, arr2];
控制台日志(arr 3;
//[ 1,2,3,4,5,6 ]
哪个应该先出现,也可以用各种各样的排列方法来说明。
constarr3=[.arr2, arr1];
控制台日志(arr 3;
[四、五、六、一、二、三]
此外,展开运算符还适用于多个数组的组合。
常数输出=[ . arr 1, arr2, arr3, arr4];
向数组中添加元素
letarr1=['this ',' is ',' an'];arr1=[.arr1,' array'];
控制台日志(arr 1;
//['this ',' is ',' an ',' array']
假设有一个
向对象添加属性
用户的对象,但缺少age属性。常数用户={
第一个名字: '克里斯',
最新名称: '波恩'
(;
要向此user对象添加age,请重用展开操作符。
恒定输出={ .用户,age:31};
假设有一个
使用 Math() 函数
数字的数组。 我想求出这些数字中的最大值、最小值或合计。constarr1=[1,- 1,0,5,3 ];
要获得最小值,请使用展开操作符和Math.min方法。
constarr1=[1,- 1,0,5,3 ];
常数最小值=常数(…arr1);
控制台日志(min;
//-1
同样,要获得最大值,可以执行以下操作:
constarr1=[1,- 1,0,5,3 ];
恒定最大值=最大值(…arr1);
控制台日志(最大;
//5
如您所见,最大值为5,删除5后恢复为3。
你可能会好奇,如果我们不使用展开操作员会发生什么?
constarr1=[1,- 1,0,5,3 ];
恒定最大值=最大值(arr1);
控制台日志(最大;
//NaN
这就返回NaN。 因为JavaScript不知道数组的最大值是什么。
假设
rest 参数
有三个参数的函数。一致我的功能(x1,x2,x3 )={
控制台日志(x1;
控制台日志(x2;
控制台日志(x3;
}
该函数:可以调用如下
myfunc(1 (一、二、三;
但是,如果传递数组会怎么样呢?
constar R1=[ 1,2,3 ];
可以使用展开操作符将此数组扩展为函数。
myfunc(arr1);
//1
//2
//3
在此,我们将数组分成三个单独的参数,然后传递给函数。
常数我的函数=(x1,x2,x3 )={
控制台日志(x1;
联合王国
le.log(x2); console.log(x3); }; const arr1 = [1, 2, 3]; myFunc(...arr1); // 1 // 2 // 3向函数传递无限参数
假设我们有一个函数,它接受无限个参数,如下所示:
const myFunc = (...args) => { console.log(args); };如果我们现在调用这个带有多个参数的函数,会看到下面的情况:
myFunc(1, 'a', new Date());返回:
[ 1, 'a', Date { __proto__: Date {} } ]然后,我们就可以动态地循环遍历参数。
将 nodeList 转换为数组
假设我们使用了展开运算符来获取页面上的所有div:
const el = [...document.querySelectorAll('div')]; console.log(el); // (3) [div, div, div]在这里可以看到我们从dom中获得了3个div。
现在,我们可以轻松地遍历这些元素,因为它们是数组了。
const el = [...document.querySelectorAll('div')]; el.forEach(item => { console.log(item); }); // <div></div> // <div></div> // <div></div>解构对象
假设我们有一个对象user:
const user = { firstname: 'Chris', lastname: 'Bongers', age: 31 };现在,我们可以使用展开运算符将其分解为单个变量。
const {firstname, ...rest} = user; console.log(firstname); console.log(rest); // 'Chris' // { lastname: 'Bongers', age: 31 }这里,我们解构了user对象,并将firstname解构为firstname变量,将对象的其余部分解构为rest变量。
展开字符串
展开运算符的最后一个用例是将一个字符串分解成单个单词。
假设我们有以下字符串:
const str = 'Hello';然后,如果我们对这个字符串使用展开操作符,我们将得到一个字母数组。
const str = 'Hello'; const arr = [...str]; console.log(arr); // [ 'H', 'e', 'l', 'l', 'o' ]~ 完,我是小智,我要刷碗去了,我们下期再见!
作者:Chris Bongers 译者:前端小智 来源:ishadeed
原文:https://dev.to/dailydevtips1/10-ways-to-use-the-spread-operator-in-javascript-1imb