7、前端知识点--关于Array.from详解
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详解的更多相关文章
- 23、前端知识点--webpack的使用详解
Webpack 是当下最热门的前端资源模块化管理和打包工具. https://www.cnblogs.com/zhangruiqi/p/7656206.html
- JavaScript进阶(十)Array 数组详解
JS array 数组详解 数组的声明方法 arrayObj = new Array(); 的数组 ,并且第一位是5 数组的运算(传地址) var t2=new Array(); t2[0]=1; t ...
- [转帖]前端-chromeF12 谷歌开发者工具详解 Network篇
前端-chromeF12 谷歌开发者工具详解 Network篇 https://blog.csdn.net/qq_39892932/article/details/82493922 blog 也是原作 ...
- [转帖]前端-chromeF12 谷歌开发者工具详解 Sources篇
前端-chromeF12 谷歌开发者工具详解 Sources篇 原贴地址:https://blog.csdn.net/qq_39892932/article/details/82498748 cons ...
- [转帖]前端-chromeF12 谷歌开发者工具详解 Console篇
前端-chromeF12 谷歌开发者工具详解 Console篇 https://blog.csdn.net/qq_39892932/article/details/82655866 趁着搞 cloud ...
- GoLang基础数据类型--->数组(array)详解
GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
- 前端构建:Source Maps详解
一.前言 当使用CoffeeScript.ClojureScript编写前端脚本时,当使用Less.Sacc编写样式规则时,是否觉得调试时无法准确找到源码位置呢?当使用jquery.min.js等经压 ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
随机推荐
- 【NOIP2016提高A组8.11】种树
题目 分析 题目要求把图删点,删成树. 考虑一下树的定义,点数n=边数m+1 并且,树中点两两之间联通,那么选的点就不能是割点. 可以用tarjan将图中最大的联通块,保证其中点两两之间有不止一条路径 ...
- Task4.用PyTorch实现多层网络
1.引入模块,读取数据 2.构建计算图(构建网络模型) 3.损失函数与优化器 4.开始训练模型 5.对训练的模型预测结果进行评估 import torch.nn.functional as F im ...
- 岭回归、lasso
参考:https://blog.csdn.net/Byron309/article/details/77716127 ---- https://blog.csdn.net/xbinwor ...
- [CSP-S模拟测试]:糊涂图(概率DP)
题目传送门(内部题76) 输入格式 第一行输入三个空格隔开的整数$n,m,s$表示随机加一条边之前的糊涂图的点数,边数,以及起点的编号. 接下来$m$行,每行两个空格隔开的整数$a,b$表示从$a$到 ...
- [CSP-S模拟测试]:位运算(数学)
题目传送门(内部题72) 输入格式 输入文件$bit.in$ 每个输入文件包含$T$组测试数据.输入文件的第一行为一个整数$T$,表示数据组数.接下来$T$行,每行表示一组测试数据每组测试数据包括三个 ...
- [CSP-S模拟测试]:砍树(数学+模拟)
题目传送门(内部题1) 输入格式 第一行两个整数$n$,$k$,代表树苗的数量和最大看书的总长度.第二行n个整数$a_i$,代表林先森希望每棵树苗的最终高度. 输出格式 一行一个整数,代表最大可能的d ...
- The Linux usage model for device tree data
Linux and the Device Tree The Linux usage model for device tree data Author: Grant Likely grant.like ...
- Java的参数传递是值传递?
引用传递和值传递的区别.(不先说定义的都是在耍流氓!) 按值调用(call by value) : 在参数传递过程中,形参和实参占用了两个完全不同的内存空间.形参所存储的内容是实参存储内容的一份拷贝. ...
- Hbase——HA搭建
架构 master1,2 免秘钥登录 配置环境变量export HBASE_HOME=/root/hbase-0.99.2export PATH=$PATH:$HBASE_HOME/bin 修改配置文 ...
- 优化 | Redis AOF重写导致的内存问题 不错
一.问题说明 业务上接到报警提示服务器内存爆了,登录查看发现机器剩余内存还很多,怀疑是被OOM了,查看/var/log/messages: kernel: [25918282.632003] Out ...