JS数组之Array.from
Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
- 首先、我们从可迭代对象入手,我们知道JS里可迭代对象有:字符串、 数组、Map、 Set、generator,他们都属于ES6标准引入了新的iterable类型 注意:对象不属于iterable类型
示例
var arr = ['Marry', 'Jack', 'Tony', 'Rose'];
var myMap = new Map([['a',1], ['b', 2]]);
var mySet = new Set(["A","B","C"]);
function *play() {
let a = 0;
while (a < 5) {
yield ++a
}
}
const num = play();
// 数组迭代
for (let i of arr) {
console.log(i) // Marry Jack Tony Rose
}
// Map迭代
for (let i of myMap) {
console.log(i) // ["a", 1] ["b", 2]
}
// Set迭代
for (let i of mySet) {
console.log(i) // A B C
}
// arr迭代
for (let i of 'arr') {
console.log(i) // a r r
}
// generator 迭代
for (let i of num ) {
console.log(i) // 1 2 3 4 5
}
2.接下来我们来看Array.from 示例
var arr = ['Marry', 'Jack', 'Tony', 'Rose'];
var myMap = new Map([['a',1], ['b', 2]]);
var mySet = new Set(["A","B","C"]);
function *play() {
let a = 0;
while (a < 5) {
yield ++a
}
}
const num = play();
console.log(Array.from(arr)); // ['Marry', 'Jack', 'Tony', 'Rose'];
console.log(Array.from(myMap)); // [['a',1],['b',2]]
console.log(Array.from(mySet)); // ["A", "B", "C"]
console.log(Array.from(num)); // [1, 2, 3, 4, 5]
console.log(Array.from("arr")); // ["a", "r", "r"]
// 类数组 arguments
// arguments
function a() {
console.log(Array.from(arguments)) // [123,456]
}
a(123,456)
// Array 中的箭头函数
console.log(Array.from([1,2,3], x => `第${x}项`)); // ["第1项", "第2项", "第3项"]
实例
// 示例 数组去重并合并
function combine() {
const arr = [].concat(...Array.from(arguments));
return Array.from(new Set(arr));
}
console.log(combine([1,2,3,4], [1,2,4,5])); // [1, 2, 3, 4, 5]