扩展操作符 ...

119 阅读1分钟

一、扩展操作符 ...

(1) ...a 代表:数组 a 的所有元素

(2)适用对象:【扩展操作符 ...】适用于【任何“可迭代对象”】,

(3)【可迭代对象】可以用 for/of 遍历

   let a = [1, 2, 3];
   let b = [0, ...a, 4];
   console.log( a );  //  [1, 2, 3]  注意:数组a不变  
   console.log( b );  //  [0, 1, 2, 3, 4];  

(4)扩展操作符...“创建的数组”,属于【深拷贝】

深拷贝:数组之间“互不影响”,就属于【深拷贝】,对于深拷贝细节,TODO

   let a = [1, 2, 3];
   let b = [ ...a];
   a[0] = 999;
   console.log( a );  //  [999, 2, 3];  【深拷贝】
   console.log( b );  //  [1, 2, 3];    【深拷贝】
   let a = [1, 2, 3];
   let b = [ ...a];
   b[0] = 999;
   console.log( a );  //  [1, 2, 3];    【深拷贝】
   console.log( b );  //  [999, 2, 3];  【深拷贝】

【例三: 未“去重”】 “字符串”是“可迭代对象”,因此可以用【扩展操作符...】把【任意字符串】转换为【单个字符的数组】

// 【例三】
let arr1 = [ ... 'hello world']; 
console.log( arr1 ); // ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']【没有“去重”】

【例四: 已“去重”】

  1. 扩展操作符... 把【任意字符串】转换为【单个字符的数组】
  2. [ ... new Set( 数组 ) ] :把数组【去重】
// 【例四】
let arr = [ ... 'hello world'];
let setArr = [... new Set(arr)];  // 去重
console.log( setArr ); // ['h', 'e', 'l', 'o', ' ', 'w', 'r', 'd']   【已经“去重”了】