ES6之Array.from()方法
2019-03-04 本文已影响0人
墨芊baby
-
复制数组
如果传的是数组,将把数组复制一份传给新数组,不会影响原数组
let arr = [1,2,3,4,5];
let arr2 = Array.from(arr);
//相当于let arr2 = [...arr]
console.log(arr) // [1,2,3,4,5]
console.log(arr2) // [1,2,3,4,5]
-
转换json对象为数组
一个类数组对象必须要有length,他们的元素属性名必须是数值或者可以转换成数值的字符。注意:属性名代表了数组的索引号,如果没有这个索引号,转出来的数组中对应的元素就为空。
let array = {
0: 'name',
1: 'age',
2: 'sex',
3: ['user1','user2','user3'],
'length': 4
}
let arr = Array.from(array )
console.log(arr) // ['name','age','sex',['user1','user2','user3']]
- 如果将上面代码中length属性去掉arr将会是一个长度为0的空数组,如果将代码修改一下,就是具有length属性,但是对象的属性名不再是数字类型的,而是其他字符串型的,代码如下:
let array = {
'name': 'name',
'age': 'age',
'sex': 'sex',
'user': ['user1','user2','user3'],
'length': 4
}
let arr = Array.from(array )
console.log(arr) // [ undefined, undefined, undefined, undefined ]
-
数组去重
利用 set 可以实现数组去重
let array = [1,2,3,1,2,4]
let arr = Array.from(new Set(array)) // [1,2,3,4]
- 将字符串转换为数组
let str = 'hello'
let arr = Array.from(str) // ["h", "e", "l", "l", "o"]
//相当于str.split('')
-
Array.from还可以接受第二个参数
作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。如下:
let arr = [1,2,3,4,5]
let set = new Set(arr)
console.log(Array.from(set, item => item + 1)) // [2,3,4,5,6]