成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

本文章向大家介紹使用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可以用來干什么

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)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
商丘市| 西乌| 文昌市| 嘉定区| 句容市| 东丰县| 嘉定区| 石泉县| 灌阳县| 泰和县| 扎囊县| 凤阳县| 大足县| 保定市| 沂水县| 永仁县| 饶阳县| 上蔡县| 定结县| 房山区| 泗洪县| 广丰县| 织金县| 唐山市| 望奎县| 呼和浩特市| 洛川县| 手机| 洪泽县| 安远县| 安庆市| 岳池县| 改则县| 东乡| 宽甸| 澄江县| 重庆市| 平昌县| 宝坻区| 开阳县| 陇南市|