来自https://segmentfault.com/a/1190000020221170
JavaScript 中有一个这样的函数: Array.from:允许在 JavaScript 集合(如: 数组、类数组对象、或者是字符串、map 、set 等可迭代对象) 上进行有用的转换。
1、将类数组转换成数组
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、克隆一个数组
Array.from() 可以很容易的实现数组的浅拷贝
3、使用值填充数组
如果你需要使用相同的值来初始化数组,那么 Array.from() 将是不错的选择。
我们来定义一个函数,创建一个填充相同默认值的数组:
const length = 3;
const init = 0;
const result = Array.from({ length }, () => init);
result; // => [0, 0, 0]
Set 对象作用
数组去重
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}