來自https://segmentfault.com/a/1190000020221170
JavaScript 中有一個這樣的函數(shù): Array.from:允許在 JavaScript 集合(如: 數(shù)組贪染、類數(shù)組對象胸蛛、或者是字符串却音、map 个盆、set 等可迭代對象) 上進行有用的轉(zhuǎn)換帖鸦。
1抄瓦、將類數(shù)組轉(zhuǎn)換成數(shù)組
Array.from(new Set(['Alice', 'Bob'])); // => ['Alice', 'Bob']
Array.from('Name'); // => ['N', 'a', 'm','e']
const map = new Map();
map.set('Alice', 32)
map.set('Bob', 23);
Array.from(map); // => [['Alice', 32], ['Bob', 23]]
2死宣、克隆一個數(shù)組
Array.from() 可以很容易的實現(xiàn)數(shù)組的淺拷貝
3痕檬、使用值填充數(shù)組
如果你需要使用相同的值來初始化數(shù)組,那么 Array.from() 將是不錯的選擇歹苦。
我們來定義一個函數(shù)青伤,創(chuàng)建一個填充相同默認值的數(shù)組:
const length = 3;
const init = 0;
const result = Array.from({ length }, () => init);
result; // => [0, 0, 0]
Set 對象作用
數(shù)組去重
var arr = [1,2,3,3,1,4];
[...new Set(arr)]; // [1, 2, 3, 4]
Array.from(new Set(arr)); // [1, 2, 3, 4]
[...new Set('ababbc')].join(''); // "abc" 字符串去重
new Set('ice doughnut'); //Set(11) {"i", "c", "e", " ", "d", …}
并集
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a, ...b]); // {1, 2, 3, 4}
交集
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}
差集
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var difference = new Set([...a].filter(x => !b.has(x))); // {1}