使用JavaScript怎么将非数组对象转换成数组

  介绍

本文章向大家介绍使用JavaScript怎么将非数组对象转换成数组的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Java可以用来干什么

Java主要应用于:1。网页开发;2。Android开发;3。客户端开发;4。网页开发;5。企业级应用开发;6。Java大数据开发;7。游戏开发等。

<强> Array.prototype.slice.call (obj)

该方法可以将类数组对象转换为数组,所谓类数组对象,就是含长度和索引属性的对象

返回的数组长度取决于对象长度属性的值,且非索引属性的值,或索引大于长度的值都不会被返回到数组中

let  obj =, {   ,& # 39;0 & # 39;:,3,   ,& # 39;1 & # 39;:,13日   ,& # 39;2 & # 39;:,23岁,   ,& # 39;3 & # 39;:,33岁   ,& # 39;长度# 39;:,3,   ,& # 39;名字# 39;:330   }   let  arr =, Array.prototype.slice.call (obj)   (3//,,,13日,23日)

简洁写法<代码> [].slice.call (obj)

<强> Array.from (obj)

该方法可以将类数组对象和可迭代对象转换为数组

类数组对象上文已提及,何为可迭代对象?

<李>

数组、集合、映射和字符串都是可迭代对象(WeakMap/WeakSet并不是可迭代对象)

<李>

字符串变成了可迭代对象,解决了编码的问题

<李>

这些对象都有默认的迭代器,即具有符号。迭代器属性

<李>

可以用的循环

<李>

所有通过生成器创建的迭代器都是可迭代对象

<李>

<代码> document.getElementsByTagName (“div") 返回的是可迭代对象但不是一个数组
  ,<代码> Array.isArray (document.getElementsByTagName (& # 39; div # 39;))>

通过生成器创建可迭代对象

let  obj =, {   ,& # 39;0 & # 39;:,3,   ,& # 39;1 & # 39;:,13日   ,& # 39;2 & # 39;:,23岁,   ,& # 39;3 & # 39;:33   }      function  * createIterator (obj) {   ,(let  value 拷贝obj) {   油品收率才能obj(价值)   ,}   }      let  iterator =, createIterator (obj)   let  arr =, Array.from(迭代器)   (3//,,,13日,23日,33)

改造对象本身,使其成为可迭代对象

默认情况下,开发者定义的对象都是不可迭代对象,但如果给<代码>符号。迭代器属性添加一个生成器,则可以将其变为可迭代对象

let  obj =, {   ,& # 39;0 & # 39;:,3,   ,& # 39;1 & # 39;:,13日   ,& # 39;2 & # 39;:,23岁,   ,& # 39;3 & # 39;:33   }      obj [Symbol.iterator],=,函数*,(),{   ,(let  value 拷贝){   油品收率,这才能(价值)   ,}   }      let  arr =, Array.from (obj)   (3//,,,13日,23日,33)

判断对象是否为可迭代对象的方法

typeof  obj [Symbol.iterator],===, & # 39;函数# 39;

一点延伸的与forEach与在

的用于循环可迭代对象,包括有数组,设置,地图,字符串

而数组,设置,地图都有forEach方法

另外,节点列表不是数组,设置,地图,但是一个可迭代对象,可以用的遍历

此外,用的循环对象时可以通过打破提前终止,而forEach无法提前跳出循环

在遍历对象的可枚举属性,包括其原型链上的属性,且不保证顺序

若要遍历对象自身的可枚举属性,使用<代码> hasOwnProperty() 方法来确定属性是否时对象自身属性

<代码> Object.getOwnPropertyNames (obj)>

反正已经扯远了,那就再扯远一点,<代码> Object.assign() 方法将所有可枚举属性的值从一个或多个源对象复制到目标对象

<强> (…obj)

展开运算符可以将可迭代对象转换为数组

例如,<代码> [……& # 39;obj # 39;] 返回<代码> [“o",“b",“j"]

字符串去重

<代码> […新设置(& # 39;objobj& # 39;)]

<强> Object.values (obj)

默认情况下,开发者定义的对象都是不可迭代对象,但提供了返回迭代器的方法

<李>

条目()

<李>

值()

<李>

键()

通过使用这些方法,可以返回相关的数组

与类数组对象需要对象有长度值不同,<代码> Object.values (obj) 返回对象自身可枚举属性值的集合

使用JavaScript怎么将非数组对象转换成数组