前情提要,在学习柯里化的过程中看到了from方法,特学习了一下。摘录了一下常用的笔记。内容引申自 segmentfault.com/a/119000002…
1、转化arguments (将类数组转换成数组)
function sumArguments() {
return Array.from(arguments).reduce((sum, num) => sum + num);
}
sumArguments(1, 2, 3); // => 6
2、克隆数组
const numbers = [3, 6, 9];
const numbersCopy = Array.from(numbers);
// Array.from(numbers) 创建了对 numbers 数组的浅拷贝,
// numbers === numbersCopy 的结果是 false,
// 意味着虽然 numbers 和 numbersCopy 有着相同的项,但是它们是不同的数组对象。
numbers === numbersCopy; // => false
!!!深拷贝
function recursiveClone(val) {
return Array.isArray(val) ? Array.from(val, recursiveClone) : val;
}
const numbers = [[0, 1, 2], ['one', 'two', 'three']];
const numbersClone = recursiveClone(numbers);
numbersClone; // => [[0, 1, 2], ['one', 'two', 'three']]
numbers[0] === numbersClone[0] // => false
3、生成数字氛围
function range(end) {
return Array.from({ length: end }, (_, index) => index);
}
range(4); // => [0, 1, 2, 3]
4、数组去重
function unique(array) {
return Array.from(new Set(array));
}
unique([1, 1, 2, 3, 3]); // => [1, 2, 3]
由此可见,要将一个类数组对象转换为一个真正的数组,必须具备以下条件:
1、该类数组对象必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数组是一个空数组。
2、该类数组对象的属性名必须为数值型或字符串型的数字
ps: 该类数组对象的属性名可以加引号,也可以不加引号