23

在JavaScript中使用Spread运算符的8种方法

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI0MDIwNTQ1Mg%3D%3D&%3Bmid=2676493926&%3Bidx=1&%3Bsn=05403c109ffdc618b90117d907f2af0e
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

了解如何在JavaScript中使用Spread(延展操作)运算符。

ES6中引入了延展操作运算符( ... )。

延展操作运算符将可迭代的对象扩展为其单独的元素,可迭代对象是可以使用 for 循环进行循环的任何对象。

可迭代的示例:Array,String,Map,Set,DOM节点。

1.在log中使用延展操作运算符

你可以在 console.log 中对可迭代对象使用延展操作操作符

let fruits = [':melon:', ':watermelon:', ':lemon:', ':banana:'];
console.log(...fruits); //:melon: :watermelon: :lemon: :banana:

2.用延展操作运算符复制数组

let fruits = [':melon:', ':watermelon:', ':lemon:', ':banana:'];
let fruitsCopy = [ ...fruits ];
console.log(...fruitsCopy); //:melon: :watermelon: :lemon: :banana:

复制对象

let user = {name : "John", age : 20 }
let userCopy = {...user}

延展操作运算符不执行深度复制。

3.延展操作运算符合并

let fruits = [':melon:', ':watermelon:', ':lemon:', ':banana:'];
let vegetables = [':tomato:', ':eggplant:', '  '];
let fruitsAndVeg = [...fruits, ...vegetables]

合并对象

合并对象时,如果已经存在某个键,则将其替换为具有相同键的最后一个对象。

let user1 = {name : "John", age : 20 };
let user2 = {name : "Ram", salary: '20K' };
let userCopy = {...user1, ...user2};
userCopy ; // {name : "Ram", age :20 , salary : '20K'};

4.延展操作运算符作为参数传递

function sum(a, b) {
   return a+b;
}
let num = [1,2];
sum(...num); // 3

math 函数一起使用

let num = [5,9,3,5,7];
Math.min(...num);
Math.max(...num);

5.延展操作运算符在解构变量中

let [melon, ...fruits ] = [':watermelon:', ':lemon:', ':banana:', ':tangerine:'];
melon; //:watermelon:
fruits; // [ ':lemon:', ':banana:', ':tangerine:']

解构对象

let user = {name : "Ram", age: 20, salary: '20K', job : "Tester" };
let { name, age, ...details } = user;
name; // Ram
age; // 20
details; // {salary: '20K', job : 'Tester'};

6.将NodeList对象转换为数组

NodeList类似于数组,但是没有 Array 的所有方法,例如 forEachmapfilter 等。

let nodeList = document.querySelectorAll('.class')
var nodeArray = [...nodeList]

7.将字符串转换为字符

字符串也是可迭代的对象,因此我们也可以使用 ... 来字符串。

let name = "Ram";
let chars = [...name]; // ["R", "a", "m"]

8.从数组中删除重复项

let num = [1, 3, 1, 3, 3, 1];
let uniqueNum = [...new Set(num)];
uniqueNum; //[ 1, 3 ]

前端大礼包新增课程了:100:

新增课程 《ES6零基础教学与解析彩票项目》 ,学习当下和未来大热技术!公众号中 回复关键字:“前端大礼包” 即可获取,不定期新增新课程,新增课程都会通知大家。

3mqUJ3B.png!web

近期文章

你知道Object.entries(),但你还知道有Object.fromEntries()吗?

Vue技巧 | 在Vue3中使元素在滚动视图时淡入

实战|如何使用JavaScript访问设备前后摄像头

仅3行核心CSS代码的rate评分组件

使用JavaScript的padStart和padEnd格式化字符串

Vue 3教程(适用于Vue 2用户)

JavaScript vs Dart  两者之间的比较

不要过度使用React.useCallback()

HTML页面生成器:使用JavaScript和Node创建CLI

React.js和Vue.js的语法并列比较

从零开始使用JavaScript制作自己的命令行(CLI工具)

Vue.js中编写更好的v-for循环的6种技巧

AFB3imJ.png!web

如果对你有帮助,还可以 在看、留言、 转发 ,这是对作者最大的帮助。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK