2019-12-17

ES6之Array.from()方法

  Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。

  那么什么是类数组对象呢?所谓类数组对象,最基本的要求就是具有length属性的对象。

  1、将类数组对象转换为真正数组:

1

2

3

4

5

6

7

8

9

let arrayLike = {

    0: 'tom',

    1: '65',

    2: '男',

    3: ['jane','john','Mary'],

    'length': 4

}

let arr = Array.from(arrayLike)

console.log(arr) // ['tom','65','男',['jane','john','Mary']]

  那么,如果将上面代码中length属性去掉呢?实践证明,答案会是一个长度为0的空数组。

  这里将代码再改一下,就是具有length属性,但是对象的属性名不再是数字类型的,而是其他字符串型的,代码如下:

1

2

3

4

5

6

7

8

9

let arrayLike = {

    'name': 'tom',

    'age': '65',

    'sex': '男',

    'friends': ['jane','john','Mary'],

    length: 4

}

let arr = Array.from(arrayLike)

console.log(arr)  // [ undefined, undefined, undefined, undefined ]

  会发现结果是长度为4,元素均为undefined的数组

  由此可见,要将一个类数组对象转换为一个真正的数组,必须具备以下条件:

  1、该类数组对象必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数组是一个空数组。

  2、该类数组对象的属性名必须为数值型或字符串型的数字

  ps: 该类数组对象的属性名可以加引号,也可以不加引号

  2、将Set结构的数据转换为真正的数组:

1

2

3

let arr = [12,45,97,9797,564,134,45642]

let set = new Set(arr)

console.log(Array.from(set))  // [ 12, 45, 97, 9797, 564, 134, 45642 ]

  Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。如下:

1

2

3

let arr = [12,45,97,9797,564,134,45642]

let set = new Set(arr)

console.log(Array.from(set, item => item + 1)) // [ 13, 46, 98, 9798, 565, 135, 45643 ]

  3、将字符串转换为数组:

1

2

let  str = 'hello world!';

console.log(Array.from(str)) // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]

  4、Array.from参数是一个真正的数组:

1

console.log(Array.from([12,45,47,56,213,4654,154]))

  像这种情况,Array.from会返回一个一模一样的新数组

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、新的声明方式 以前我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种...
    令武阅读 1,046评论 0 7
  • 转载:在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总...
    七色烟火阅读 3,264评论 0 3
  • 1.join() var arr = [1,2,3]; console.log(arr.join()); // 1...
    _杨柳_阅读 533评论 0 0
  • 什么是ES6? ECMAScript 6.0 是继ECMAScript 5.1 之后 JavaScript 语...
    多多酱_DuoDuo_阅读 1,147评论 0 4
  • 文章转自唐山心泉文学社编辑部彭先发 我的一只眼死了 死去的那只眼 看不到颜色 它独立的张开、闭合 从此 我寻来的光...
    于papa阅读 223评论 0 0