三种在ES6中将非数组转换为数组的方法详情

作者:猪痞恶霸 时间:2024-04-16 08:55:06 

前言:

我们常常想使用数组的方法,比如forEachfilter,又或者some等等来处理非数组的数据类型,那么在这些场景下,我们就需要将非数组转换为数组,而在ES6新增了三种数组转换方法,分别为**Array.form()** ,Array.of() 与扩展运算符,三种转换方法各有不同的转换对象,下面我们来分别看看。

Array.from()

转换数组方法Array.from()可以将对象转化为真正的数组,对象包括了两种,分别是:类数组对象含有迭代器的对象

类数组对象转换实例

类数组对象的表现形式是以0,1数字作为键的一种对象形式,而使用Array.from()转换后,它的值将被转换为数组形式

let arrObj = {
 "0": "猪痞恶霸",
 "1": "fzf404",
 length:2
};
let arr = Array.from(arrObj);
console.log(arr); // ['猪痞恶霸', 'fzf404']

如上,我们定义了一个arrObj的类数组对象,通过Array.from()转换方法将其转换为数组得到['猪痞恶霸', 'fzf404']

可能读者看到这里想说:转换成数组有什么用途啊,不能光学语法是不是,那么下面来看类数组对象转换数组真正的实际应用。

类数组对象转换应用

在开发中,我们操作DOM会用到节点列表,通过document.querySelectorAll()获取,如下图,可以清晰得了解到,我们拿到的节点列表是类数组对象,所以无法直接使用数组的一些方法,比如forEach,又或者是filter等等。

三种在ES6中将非数组转换为数组的方法详情

所以需要使用Array.form()方法将其转换为真正的数组,再使用数组方法进行一些额外操作

含有迭代器对象转换实例

Array.form()还可以将含有迭代器的对象转换为真正的数组,比如字符串,map或者是set,下面来看看它的使用

let str = "猪痞恶霸"
let strArr = Array.from(str)
console.log(strArray) // [ '猪', '痞', '恶', '霸' ]

拿字符串举例,转换为数组后,每个元素对应着字符串每一个字符,我们之前经常为切割字符串而烦恼,需要去使用正则切割,现在只需要Array.from(str)一行代码来完成字符串的割离。

这里的应用我不再举例,转换数组应用的本质都是为了更好地使用数组的方法去操控处理数据,而Array.from还有第二个参数

Array.from()的第二个参数

第二个参数比较像数组的map方法,作为一个回调函数来处理转换后数据的每一个元素

let str = "猪痞恶霸"
let _str = Array.form(str, (item) => {
   return item+item
})
console.log(_str) // [ '猪猪', '痞痞', '恶恶', '霸霸' ]

上面的操作,我模拟了字符串的处理,常常可以使用正则处理字符串,当然这就可以联想到我们可以使用这种方法来处理用户输入的内容,也可以防御恶意输入的产生。

来源:https://juejin.cn/post/7124869858289778701

标签:ES6,数组,转换
0
投稿

猜你喜欢

  • python中实现k-means聚类算法详解

    2021-07-18 21:42:49
  • PyCharm添加Anaconda中的虚拟环境Python解释器出现Conda executable is not found错误解决

    2022-02-24 23:51:03
  • 正视WEB标准,一本全面的标准参考书

    2009-05-30 16:36:00
  • dataframe 按条件替换某一列中的值方法

    2021-06-16 00:23:33
  • MySQL数据库常用命令小结

    2024-01-15 22:16:31
  • 解决MySQL去除密码登录告警的问题

    2024-01-26 12:33:21
  • php如何解决无法上传大于8M的文件问题

    2024-06-05 09:39:24
  • python使用sklearn实现决策树的方法示例

    2023-03-25 07:44:28
  • 粗暴解决CUDA out of memory的问题

    2023-05-12 05:40:00
  • Django使用httpresponse返回用户头像实例代码

    2021-08-28 04:47:03
  • winxp 安装MYSQL 出现Error 1045 access denied 的解决方法

    2024-01-20 20:53:09
  • 对Python中 \\r, \\n, \\r\\n的彻底理解

    2022-09-14 07:00:15
  • php简单防盗链验证实现方法

    2023-09-12 04:55:15
  • Python异常继承关系和自定义异常实现代码实例

    2023-06-22 07:34:44
  • python 动态绘制爱心的示例

    2022-10-22 08:20:23
  • Django Auth应用实现用户身份认证

    2022-10-20 12:37:36
  • AJAX在GET中文的时候解决乱码的方法

    2007-11-04 13:04:00
  • Python文件的操作处理详解

    2022-07-07 06:44:16
  • Python 读取 .gz 文件全过程

    2021-11-02 16:01:04
  • elementUI el-table二次封装的详细实例

    2024-05-03 15:12:00
  • asp之家 网络编程 m.aspxhome.com