本文章向大家介紹使用JavaScript怎么將非數(shù)組對象轉(zhuǎn)換成數(shù)組的基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下。
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的昌吉網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!Java主要應(yīng)用于:1. web開發(fā);2. Android開發(fā);3. 客戶端開發(fā);4. 網(wǎng)頁開發(fā);5. 企業(yè)級(jí)應(yīng)用開發(fā);6. Java大數(shù)據(jù)開發(fā);7.游戲開發(fā)等。
Array.prototype.slice.call(obj)
該方法可以將類數(shù)組對象轉(zhuǎn)換為數(shù)組,所謂類數(shù)組對象,就是含 length 和索引屬性的對象
返回的數(shù)組長度取決于對象 length 屬性的值,且非索引屬性的值,或索引大于 length 的值都不會(huì)被返回到數(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ù)組對象和可迭代對象轉(zhuǎn)換為數(shù)組
類數(shù)組對象上文已提及,何為可迭代對象?
Array、Set、Map 和字符串都是可迭代對象(WeakMap/WeakSet 并不是可迭代對象)
字符串變成了可迭代對象,解決了編碼的問題
這些對象都有默認(rèn)的迭代器,即具有 Symbol.iterator 屬性
可以用 for of 循環(huán)
所有通過生成器創(chuàng)建的迭代器都是可迭代對象
document.getElementsByTagName("div")
返回的是可迭代對象但不是一個(gè)數(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]
改造對象本身,使其成為可迭代對象
默認(rèn)情況下,開發(fā)者定義的對象都是不可迭代對象,但如果給 Symbol.iterator
屬性添加一個(gè)生成器,則可以將其變?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'
一點(diǎn)延伸 for of 與 forEach 與 for in
for of 用于循環(huán)可迭代對象,包括有 Array, Set, Map, 字符串
而 Array, Set, Map 都有 forEach 方法
另外,NodeList 不是 Array, Set, Map,但是一個(gè)可迭代對象,可以用 for of 遍歷
此外,用 for of 循環(huán)對象時(shí)可以通過 break 提前終止,而 forEach 無法提前跳出循環(huán)
for in 遍歷對象的可枚舉屬性,包括其原型鏈上的屬性,且不保證順序
若要遍歷對象自身的可枚舉屬性,使用 hasOwnProperty()
方法來確定屬性是否時(shí)對象自身屬性
Object.getOwnPropertyNames(obj)
, 返回對象自身可枚舉或不可枚舉屬性
反正已經(jīng)扯遠(yuǎn)了,那就再扯遠(yuǎn)一點(diǎn), Object.assign()
方法將所有可枚舉屬性的值從一個(gè)或多個(gè)源對象復(fù)制到目標(biāo)對象
[…obj]
展開運(yùn)算符可以將可迭代對象轉(zhuǎn)換為數(shù)組
例如, [...'obj']
返回 ["o", "b", "j"]
字符串去重
[...new Set('objobj')]
Object.values(obj)
默認(rèn)情況下,開發(fā)者定義的對象都是不可迭代對象,但提供了返回迭代器的方法
entries()
values()
keys()
通過使用這些方法,可以返回相關(guān)的數(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ù)組的關(guān)系
在很大程度上,可以將字符串看成字符串?dāng)?shù)組,
都有 length 屬性
都有 concat()
/ indexOf()
/ includes()
/ slice()
方法
不過值得注意的是, string 上沒有方法可以原地修改它自身的內(nèi)容,都是返回新的 string
string 還有個(gè) repeat()
方法,創(chuàng)建指定數(shù)量的字符串副本
以上就是小編為大家?guī)淼氖褂肑avaScript怎么將非數(shù)組對象轉(zhuǎn)換成數(shù)組的全部內(nèi)容了,希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享文章:使用JavaScript怎么將非數(shù)組對象轉(zhuǎn)換成數(shù)組-創(chuàng)新互聯(lián)
當(dāng)前地址:http://jinyejixie.com/article40/csheeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、全網(wǎng)營銷推廣、ChatGPT、企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容