91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用JavaScript怎么將非數組對象轉換成數組

發布時間:2021-02-23 15:44:49 來源:億速云 閱讀:162 作者:戴恩恩 欄目:web開發

本文章向大家介紹使用JavaScript怎么將非數組對象轉換成數組的基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。

Java可以用來干什么

Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。

Array.prototype.slice.call(obj)

該方法可以將類數組對象轉換為數組,所謂類數組對象,就是含 length 和索引屬性的對象

返回的數組長度取決于對象 length 屬性的值,且非索引屬性的值,或索引大于 length 的值都不會被返回到數組中

let obj = {
 '0': 3,
 '1': 13,
 '2': 23,
 '3': 33,
 'length': 3,
 'name': 330
}
let arr = Array.prototype.slice.call(obj)
// [3, 13, 23]

簡潔寫法 [].slice.call(obj)

Array.from(obj)

該方法可以將類數組對象和可迭代對象轉換為數組

類數組對象上文已提及,何為可迭代對象?

  • Array、Set、Map 和字符串都是可迭代對象(WeakMap/WeakSet 并不是可迭代對象)

  • 字符串變成了可迭代對象,解決了編碼的問題

  • 這些對象都有默認的迭代器,即具有 Symbol.iterator 屬性

  • 可以用 for of 循環

  • 所有通過生成器創建的迭代器都是可迭代對象

  • document.getElementsByTagName("div") 返回的是可迭代對象但不是一個數組
     Array.isArray(document.getElementsByTagName('div')) 返回 false

通過生成器創建可迭代對象

let obj = {
 '0': 3,
 '1': 13,
 '2': 23,
 '3': 33
}

function *createIterator(obj){
 for(let value in obj){
  yield obj[value]
 }
}

let iterator = createIterator(obj)
let arr = Array.from(iterator)
// [3, 13, 23, 33]

改造對象本身,使其成為可迭代對象

默認情況下,開發者定義的對象都是不可迭代對象,但如果給 Symbol.iterator 屬性添加一個生成器,則可以將其變為可迭代對象

let obj = {
 '0': 3,
 '1': 13,
 '2': 23,
 '3': 33
}

obj[Symbol.iterator] = function* () {
 for(let value in this){
  yield this[value]
 }
}

let arr = Array.from(obj)
// [3, 13, 23, 33]

判斷對象是否為可迭代對象的方法

typeof obj[Symbol.iterator] === 'function'

一點延伸 for of 與 forEach 與 for in

for of 用于循環可迭代對象,包括有 Array, Set, Map, 字符串

而 Array, Set, Map 都有 forEach 方法

另外,NodeList 不是 Array, Set, Map,但是一個可迭代對象,可以用 for of 遍歷

此外,用 for of 循環對象時可以通過 break 提前終止,而 forEach 無法提前跳出循環

for in 遍歷對象的可枚舉屬性,包括其原型鏈上的屬性,且不保證順序

若要遍歷對象自身的可枚舉屬性,使用 hasOwnProperty() 方法來確定屬性是否時對象自身屬性

Object.getOwnPropertyNames(obj) , 返回對象自身可枚舉或不可枚舉屬性

反正已經扯遠了,那就再扯遠一點, Object.assign() 方法將所有可枚舉屬性的值從一個或多個源對象復制到目標對象

[…obj]

展開運算符可以將可迭代對象轉換為數組

例如, [...'obj'] 返回 ["o", "b", "j"]

字符串去重

[...new Set('objobj')]

Object.values(obj)

默認情況下,開發者定義的對象都是不可迭代對象,但提供了返回迭代器的方法

  • entries()

  • values()

  • keys()

通過使用這些方法,可以返回相關的數組

與類數組對象需要對象有 length 值不同,Object.values(obj) 返回對象自身可枚舉屬性值的集合

let obj = {
 '0': 3,
 '1': 13,
 '2': 23,
 '3': 33
}
let arr = Object.values(obj) // [3, 13, 23, 33]

字符串與數組的關系

在很大程度上,可以將字符串看成字符串數組,

都有 length 屬性

都有 concat() / indexOf() / includes() / slice() 方法

不過值得注意的是, string 上沒有方法可以原地修改它自身的內容,都是返回新的 string

string 還有個 repeat() 方法,創建指定數量的字符串副本

以上就是小編為大家帶來的使用JavaScript怎么將非數組對象轉換成數組的全部內容了,希望大家多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二连浩特市| 黄冈市| 永新县| 灵宝市| 合阳县| 顺平县| 慈溪市| 新沂市| 酉阳| 陈巴尔虎旗| 南通市| 北安市| 平山县| 峨边| 枞阳县| 迁西县| 平乐县| 洞头县| 旬阳县| 磴口县| 喜德县| 巴彦淖尔市| 长寿区| 富源县| 广灵县| 丰城市| 肥西县| 苍山县| 镇远县| 吉安市| 昌邑市| 新化县| 胶南市| 舒兰市| 麦盖提县| 卢湾区| 盘锦市| 肇州县| 南涧| 龙陵县| 乌拉特后旗|