使用JavaScript怎么將非數(shù)組對象轉換成數(shù)組-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站設計制作、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的昌吉網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

Java可以用來干什么

Java主要應用于:1. web開發(fā);2. Android開發(fā);3. 客戶端開發(fā);4. 網(wǎng)頁開發(fā);5. 企業(yè)級應用開發(fā);6. Java大數(shù)據(jù)開發(fā);7.游戲開發(fā)等。

Array.prototype.slice.call(obj)

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

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

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)

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

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

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

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

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

  • 可以用 for of 循環(huán)

  • 所有通過生成器創(chuàng)建的迭代器都是可迭代對象

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

通過生成器創(chuàng)建可迭代對象

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]

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

默認情況下,開發(fā)者定義的對象都是不可迭代對象,但如果給 Symbol.iterator 屬性添加一個生成器,則可以將其變?yōu)榭傻鷮ο?/p>

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 用于循環(huán)可迭代對象,包括有 Array, Set, Map, 字符串

而 Array, Set, Map 都有 forEach 方法

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

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

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

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

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

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

[…obj]

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

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

字符串去重

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

Object.values(obj)

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

  • entries()

  • values()

  • keys()

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

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

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

字符串與數(shù)組的關系

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

都有 length 屬性

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

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

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

以上就是小編為大家?guī)淼氖褂肑avaScript怎么將非數(shù)組對象轉換成數(shù)組的全部內(nèi)容了,希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設計公司!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享文章:使用JavaScript怎么將非數(shù)組對象轉換成數(shù)組-創(chuàng)新互聯(lián)
當前地址:http://muchs.cn/article40/csheeo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、全網(wǎng)營銷推廣ChatGPT、企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計