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