1、Array.from()方法就是将一个类数组对象 或 可遍历对象 或 可迭代对象 转换成一个真正的数组。浅拷贝的数组实例。

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

应用一、将类数组对象转换为真正数组

 let arrayLike = { 0:'jack', 1:'60', 2:'男', 3:['rose','john','mary'], 'length':4};
let arr = Array.from(arrayLike)
console.log(arr)
// 返回值:  ["jack", "60", "男", Array(3)]
// 如果,将上面代码中的length属性去掉的话,运行结果是,长度为0的一个空数组。

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

 let arrayLike2 = { 'name':'tom', 'age':60, 'sex':'男', 'friends':['jack','jogn','mary'],length:4}
let arr2 = Array.from(arrayLike2)
console.log(arr2)
// 运行结果:(4) [undefined, undefined, undefined, undefined],即长度为4,每个元素为undefined

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

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

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

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

应用二、将Set结构的数组转换成真正的数组

 let arr3 = [12,45,97,9797,564,134,45642]
let set = new Set(arr3)
console.log(set)
// 返回结果:Set(7) {12, 45, 97, 9797, 564, …},即set集合对象
 console.log(Array.from(set))
// 返回结果: (7) [12, 45, 97, 9797, 564, 134, 45642]

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

 let arr4 = [10, 20, 30, 40, 50, 60, 70, 80 ,90]
let set4 = new Set(arr4)
console.log(Array.from(set4,item => item + 5))
// 返回结果: (9) [15, 25, 35, 45, 55, 65, 75, 85, 95]

应用三、将字符串转成数组

 let str2 = 'hello world'
console.log(Array.from(str2))
// 返回值:(11) ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]

应用四、Array.from参数是一个真正的数组,那么返回的是和原数组一模一样的 数组

console.log(Array.from([10, 20, 30, 40, 50, 60, 70, 80 ,90]))
// 返回值:(9) [10, 20, 30, 40, 50, 60, 70, 80, 90]

7、前端知识点--关于Array.from详解的更多相关文章

  1. 23、前端知识点--webpack的使用详解

    Webpack 是当下最热门的前端资源模块化管理和打包工具. https://www.cnblogs.com/zhangruiqi/p/7656206.html

  2. JavaScript进阶(十)Array 数组详解

    JS array 数组详解 数组的声明方法 arrayObj = new Array(); 的数组 ,并且第一位是5 数组的运算(传地址) var t2=new Array(); t2[0]=1; t ...

  3. [转帖]前端-chromeF12 谷歌开发者工具详解 Network篇

    前端-chromeF12 谷歌开发者工具详解 Network篇 https://blog.csdn.net/qq_39892932/article/details/82493922 blog 也是原作 ...

  4. [转帖]前端-chromeF12 谷歌开发者工具详解 Sources篇

    前端-chromeF12 谷歌开发者工具详解 Sources篇 原贴地址:https://blog.csdn.net/qq_39892932/article/details/82498748 cons ...

  5. [转帖]前端-chromeF12 谷歌开发者工具详解 Console篇

    前端-chromeF12 谷歌开发者工具详解 Console篇 https://blog.csdn.net/qq_39892932/article/details/82655866 趁着搞 cloud ...

  6. GoLang基础数据类型--->数组(array)详解

    GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...

  7. JavaScript进阶知识点——函数和对象详解

    JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...

  8. 前端构建:Source Maps详解

    一.前言 当使用CoffeeScript.ClojureScript编写前端脚本时,当使用Less.Sacc编写样式规则时,是否觉得调试时无法准确找到源码位置呢?当使用jquery.min.js等经压 ...

  9. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

随机推荐

  1. LeetCode--094--二叉树的中序遍历(python)

    递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # ...

  2. ubuntu 14.04 安装openjdk 8

    最近准备在ubuntu14.04上安装Oracle,但是需要提前安装jdk,发现问题挺多的,后面看到了如下的操作步骤,成功安装,特意记录下来. 致谢:https://www.yangshenglian ...

  3. .Net 网站配置文件 webconfig 配置。 字体图标+视频播放 以及 文件上传

    ASP.NET MVC 上传大文件时404 原来IIS7的上传文件大小,即便是在经典模式下,也一定要在system.webServer里设置,加上去就OK了 <system.webServer& ...

  4. luogu P1125 笨小猴 x

    P1125 笨小猴 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设max ...

  5. 【bzoj1123】[POI2008]BLO

    *题目描述: Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. *输入 输入n<=1000 ...

  6. session.flush()与session.clear()的区别

    session.flush()和session.clear()就针对session的一级缓存的处理. 简单的说, 1 session.flush()的作用就是将session的缓存中的数据与数据库同步 ...

  7. android 后台运行service实现和后台的持续交互

    在项目中有这么一种需求 需要后台开启服务,时刻记录用户和软件的交互行为,一旦交互发生,就向服务器测发送一条消息 解决方案: 一.创建一个service服务类 在service中开启一个线程,servi ...

  8. oracle 如何更改密码的hash

    如何迁移oracle user的密码到新的环境,一下列出了方法: select name,spare4||';'||password pwd from sys.user$ where name = ' ...

  9. centos双网卡配置

    centos双网卡问题,一个网卡配置局域网,一个网卡配置公网,如果内网访问自动走eth1,如果外网访问自动走eth2. 需要配置路由吗? 1. 首先查看机器是否是双网卡,命令如下: lspci | g ...

  10. vmware14克隆后UUID相同的解决方法

    查看网卡 UUID值 [root@localhost network-scripts]# nmcli connection showNAME UUID TYPE DEVICE ens33 cf228d ...