本文章向大家介绍使用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) 代码>返回对象自身可枚举属性值的集合