在JavaScript中使用延展操作运算符的8种方法

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

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

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

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

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

 
 
 
  1. let fruits = ['', '', '', '']; 
  2. console.log(...fruits); //    

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

 
 
 
  1. let fruits = ['', '', '', '']; 
  2. let fruitsCopy = [ ...fruits ];  
  3. console.log(...fruitsCopy); //  

复制对象

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

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

3. 延展操作运算符合并

 
 
 
  1. let fruits = ['', '', '', '']; 
  2. let vegetables = ['', '', '']; 
  3. let fruitsAndVeg = [...fruits, ...vegetables] 

合并对象

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

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

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

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

与 math 函数一起使用

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

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

 
 
 
  1. let [melon, ...fruits ] = ['', '', '', '']; 
  2. melon; //  
  3. fruits; // [ '', '', ''] 

解构对象

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

6. 将NodeList对象转换为数组

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

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

7. 将字符串转换为字符

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

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

8. 从数组中删除重复项

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

网站题目:在JavaScript中使用延展操作运算符的8种方法
网页URL:http://www.shufengxianlan.com/qtweb/news46/439446.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联