余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

JS 中使用扩展运算符的10种方法,好家伙,点个赞呗

xiyangw 2022-11-26 17:10 12 浏览 0 评论

本文已经过原作者 Chris Bongers 授权翻译。

复制数组

我们可以使用展开操作符复制数组,不过要注意的是这是一个浅拷贝

JS 中使用扩展运算符的10种方法,好家伙,点个赞呗

const arr1 = [1,2,3];
const arr2 = [...arr1];
console.log(arr2);
// [ 1, 2, 3 ]

这样我们就可以复制一个基本的数组,注意,它不适用于多级数组或带有日期或函数的数组。

合并数组

假设我们有两个数组想合并为一个,早期间我们可以使用concat方法,但现在可以使用展开操作符:

const arr1 = [1,2,3];
const arr2 = [4,5,6];
const arr3 = [...arr1, ...arr2];
console.log(arr3);
// [ 1, 2, 3, 4, 5, 6 ]

我们还可以通过不同的排列方式来说明哪个应该先出现。

const arr3 = [...arr2, ...arr1];
console.log(arr3);
[4, 5, 6, 1, 2, 3];

此外,展开运算符号还适用多个数组的合并:

const output = [...arr1, ...arr2, ...arr3, ...arr4];

向数组中添加元素

let arr1 = ['this', 'is', 'an'];
arr1 = [...arr1, 'array'];
console.log(arr1);
// [ 'this', 'is', 'an', 'array' ]

向对象添加属性

假设你有一个user 的对象,但它缺少一个age属性。

const user = {
  firstname: 'Chris',
  lastname: 'Bongers'
};

要向这个user对象添加age,我们可以再次利用展开操作符。

const output = {...user, age: 31};

使用 Math() 函数

假设我们有一个数字数组,我们想要获得这些数字中的最大值、最小值或者总和。

const arr1 = [1, -1, 0, 5, 3];

为了获得最小值,我们可以使用展开操作符和 Math.min 方法。

const arr1 = [1, -1, 0, 5, 3];
const min = Math.min(...arr1);
console.log(min);
// -1

同样,要获得最大值,可以这么做:

const arr1 = [1, -1, 0, 5, 3];
const max = Math.max(...arr1);
console.log(max);
// 5

如大家所见,最大值5,如果我们删除5,它将返回3

你可能会好奇,如果我们不使用展开操作符会发生什么?

const arr1 = [1, -1, 0, 5, 3];
const max = Math.max(arr1);
console.log(max);
// NaN

这会返回NaN,因为JavaScript不知道数组的最大值是什么。

rest 参数

假设我们有一个函数,它有三个参数。

const myFunc(x1, x2, x3) => {
    console.log(x1);
    console.log(x2);
    console.log(x3);
}

我们可以按以下方式调用这个函数:

myFunc(1, 2, 3);

但是,如果我们要传递一个数组会发生什么。

const arr1 = [1, 2, 3];

我们可以使用展开操作符将这个数组扩展到我们的函数中。

myFunc(...arr1);
// 1
// 2
// 3

这里,我们将数组分为三个单独的参数,然后传递给函数。

const myFunc = (x1, x2, x3) => {
  console.log(x1);
  console.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

相关推荐

「译」编写优雅的JavaScript代码 - 最佳实践
「译」编写优雅的JavaScript代码 - 最佳实践

[译]编写优雅的JavaScript代码-最佳实践[原文]:https://devinduct.com/blogpost/22/javascript-cl...

2023-03-21 20:07 xiyangw

实训写的html电商网页代码(个人简历html网页代码)
实训写的html电商网页代码(个人简历html网页代码)

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><tit...

2023-03-21 20:07 xiyangw

html常用代码大全(html全部代码表)

1.结构性定义文件类型<HTML></HTML>(放在档案的开头与结尾)文件主题<TITLE></TITLE>(必须放在「文头」区块内)文头&...

让人“头痛欲裂”的JavaScript的小代码(javascript代码大全)

前言不知道各位Web前端坑中的朋友们有没有遇到过一些让自己“头痛欲裂”的代码?我就遇到过很多,不是说人家写的不好,还是写的太“好”了。这个加引号的意思是:这些代码写很简洁,不过个人感觉有些“偏门”,导...

500行JS代码打造你的专属GIT(实用js代码)

这篇短文将介绍如何用500行的Javascript代码,写一个你自己专属的GIT。这不是一个如何使用GIT的工具,而是GIT的底层实现。目的是希望能加深对GIT的底层实现原理,而不是想换掉GIT,这...

用JS解密工具轻松解密JS代码(js密码加密解密)

当今的网络世界,JavaScript(JS)被广泛应用于网页开发和应用程序设计。然而,由于JavaScript代码的易读性,许多人担心这种脚本语言的安全性,它容易受到黑客攻击和信息窃取。因此,JS加密...

常用的JS代码片段-业务功能(js经典代码)

判断所有数据类型@paramobj要判断类型的数据@return{string}数据类型(小写)consttype=(function(){//映射类型constcl...

项目中用到的部分js代码(项目代码怎么获取)

项目中用到的通用代码,exportdefault{getCommonImgCode:function(vueObj){vueObj.$http({method:'get',ur...

13 行 JavaScript 代码让你看起来像是高手(javascript小游戏代码)

Javascript可以做许多神奇的事情,也有很多东西需要学习,今天我们介绍几个短小精悍的代码段。获取随机布尔值(True/False)使用Math.random()会返回0到1的随机数...

一个简单的 HTML 网页设计代码(简单html网页范例)

<!DOCTYPEhtml><html><head><title>我的网页</title></head><body>...

一句代码判断javascript中所有数据类型(javascript判断数据类型的方法有)
一句代码判断javascript中所有数据类型(javascript判断数据类型的方法有)

javascript中有6种基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、S...

2023-03-21 20:05 xiyangw

你是否了解的几种JavaScript 代码技巧(你是否了解内控及合规的含义)

1.多表达式多if判断我们可以在数组中存储多个值,并且可以使用数组include方法。`//长``if(x==='abc'||x==='def'...

js优化代码分支(代码优化分为)

//优化前functionspeak(name){if(name==='老牛'){console.log('老牛咩咩叫');}elseif(...

亚马逊描述中支持的常用HTML代码(亚马逊产品描述html代码)

亚马逊描述中支持的常用HTML代码:1.换行符号<br>第一行内容<br>第二行内容<br>第三行内容2.加粗符号<b></b>&...

14个 JavaScript 代码优化技巧(javascript九九乘法表代码)
14个 JavaScript 代码优化技巧(javascript九九乘法表代码)

作者|MahdhiRezvi译者|王强策划|李俊辰转发链接:https://mp.weixin.qq.com/s/veJ6mhxd5XwVG4OF...

2023-03-21 20:04 xiyangw

取消回复欢迎 发表评论: