国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Array.from的妙用

developerworks / 1467人閱讀

摘要:所謂對(duì)象指具有數(shù)組某些行為的對(duì)象,表現(xiàn)出來(lái)的特征就是具有屬性。不考慮兼容性的話,我們就可以直接用了。前面說(shuō)了的一些內(nèi)容,既然標(biāo)題說(shuō)了妙用自然還要來(lái)點(diǎn)新的東西。好用歸好用,不過(guò)在性能上卻有些尷尬。

es6新特性中Array類(lèi)多了一個(gè)靜態(tài)方法from,這個(gè)方法作用是將一個(gè)ArrayLike對(duì)象或者Iterable對(duì)象轉(zhuǎn)換成一個(gè)Array,本文只討論ArrayLike對(duì)象相關(guān)內(nèi)容。

所謂ArrayLike對(duì)象指具有數(shù)組某些行為的對(duì)象,表現(xiàn)出來(lái)的特征就是具有length屬性。

var obj = {
    "0" : 1,
    length: 1
};

這一類(lèi)對(duì)象不能調(diào)用數(shù)組所具有的方法(push/forEach/map之類(lèi)),最常見(jiàn)的有兩種:DOM中的NodeList和函數(shù)中的arguments

在平常開(kāi)發(fā)中,我們經(jīng)常遇到需要將這兩種對(duì)象轉(zhuǎn)化為真正數(shù)組的場(chǎng)景,一般我們是這么寫(xiě):

var args = [].slice.call(arguments);
var imgs = [].slice.call(document.querySelectorAll("img"));

現(xiàn)在我們有了Array.from,可以這樣寫(xiě)。

var args = Array.from(arguments);
var imgs = Array.from(document.querySelectorAll("img"));

不考慮兼容性的話,我們就可以直接用Array.from了。前面說(shuō)了Array.from的一些內(nèi)容,既然標(biāo)題說(shuō)了妙用,自然還要來(lái)點(diǎn)新的東西。

有時(shí)我們會(huì)遇到這樣的場(chǎng)景,需要?jiǎng)?chuàng)建一個(gè)包含從0到99(n)的連續(xù)整數(shù)的數(shù)組。以前我們會(huì)這樣寫(xiě)

var arr = [];
for(var i = 0; i <= 99; i++) {
    arr.push(i);
}

這種方法最直觀了,性能也很好。只是不喜歡寫(xiě)for循環(huán)的同學(xué)可能不會(huì)這樣寫(xiě),所以有人搞出了下面這種寫(xiě)法

var arr = Array(100).join(" ").split("").map(function(item,index){return index});

這種方法中Array(100)創(chuàng)建了一個(gè)包含100個(gè)空位的數(shù)組。

但是這樣的數(shù)組是沒(méi)法迭代的(參考forEach方法的定義),

所以要通過(guò)字符串轉(zhuǎn)換,覆蓋undefined,最后調(diào)用map修改元素值。

有了es6,用Array.from的寫(xiě)法是這樣的

var arr = Array.from({length:100}).map(function(item,index){return index});

這種方法中Array.from({length:100})也是創(chuàng)建了一個(gè)包含100個(gè)undefined的數(shù)組,

但是這個(gè)數(shù)組可以迭代([].slice.call({length:100})創(chuàng)建的不可迭代),可以直接調(diào)用map方法。

上面的代碼其實(shí)包含了一個(gè)重要的信息,Array.from創(chuàng)建的數(shù)組是可以迭代的(參考Array.from方法的定義),

即使元素值都是undefined。所以Array.from還可以用來(lái)實(shí)現(xiàn)次數(shù)確定的循環(huán)遍歷。例如在寫(xiě)React組件時(shí),有時(shí)要map迭代確定次數(shù),生成html

Array.from好用歸好用,不過(guò)在性能上卻有些尷尬。上面三種方法第一種性能最好,第二種次之,第三種最差。具體數(shù)據(jù)可以看這里constarray

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/78679.html

相關(guān)文章

  • js常用小技巧黑科技 - javascript(js) commonly used skill

    摘要:原文地址小數(shù)取整妙用隱式轉(zhuǎn)換數(shù)字字符串轉(zhuǎn)轉(zhuǎn)時(shí)間戳數(shù)組多維數(shù)組轉(zhuǎn)逗號(hào)分隔字符串解構(gòu)交換的值擴(kuò)展運(yùn)算符取數(shù)組最大值生成時(shí)間字符串轉(zhuǎn)數(shù)組合并對(duì)象等同于常用方法數(shù)字前補(bǔ)數(shù)組元素為對(duì)象的去重?cái)?shù)組求和金錢(qián)格式化短路邏輯代替生成指定長(zhǎng)度數(shù)組正則進(jìn)階捕 原文地址 https://github.com/TigerHee/s... 小數(shù)取整: 1.234 | 0 ~~1.234 1.234 >...

    shadowbook 評(píng)論0 收藏0
  • JS數(shù)組方法匯總

    Javascript原生方法 注意:js數(shù)組每一項(xiàng)可以保存任何類(lèi)型的數(shù)據(jù),比如第一個(gè)元素是字符串,第二個(gè)元素是數(shù)字,第三個(gè)元素是對(duì)象 創(chuàng)建數(shù)組 tips: 建議使用數(shù)組字面量方式【簡(jiǎn)單】 var colors = new Array() var colors = new Array(red,blue) var colors = []; var colors = [red,blue]; 檢測(cè)數(shù)組 ...

    wean 評(píng)論0 收藏0
  • JavaScript中this妙用

    摘要:關(guān)鍵字始腳本能夠根據(jù)使用這個(gè)關(guān)鍵字的上下文將值傳遞給函數(shù)。替我們完成的工作之一是從鏈接獲得也就是標(biāo)簽的屬性。實(shí)際上,可以讓站點(diǎn)上的所有鏈接都調(diào)用這個(gè)相同的代碼,這一行代碼都會(huì)自動(dòng)獲得相應(yīng)的值。 JavaScript關(guān)鍵字this始JS腳本能夠根據(jù)使用這個(gè)關(guān)鍵字的上下文將值傳遞給函數(shù)。我們先來(lái)看如下一個(gè)網(wǎng)頁(yè),在用戶單擊鏈接之后,彈出一個(gè)alert框,然后再轉(zhuǎn)到href屬性所指的網(wǎng)頁(yè)HTM...

    jayzou 評(píng)論0 收藏0
  • #關(guān)于setTimeout妙用

    摘要:如果對(duì)當(dāng)前元素的點(diǎn)擊事件處理加上的話,那么執(zhí)行順序就會(huì)改變?yōu)楦冈禺?dāng)前元素。這樣的結(jié)果會(huì)導(dǎo)致新內(nèi)容很晚才能渲染完成,很多時(shí)候我們需要讓界面先渲染完成之后在去調(diào)用引擎來(lái)執(zhí)行,那么可以使用來(lái)延遲引擎的調(diào)用 關(guān)于setTimeout的妙用 定義 在指定的延遲時(shí)間之后調(diào)用一個(gè)函數(shù)或執(zhí)行一個(gè)代碼片段 這個(gè)是setTimeout最主要的功能,但也是很坑的地方,首先javascript其實(shí)是運(yùn)行在單...

    崔曉明 評(píng)論0 收藏0
  • return/break語(yǔ)句妙用

    摘要:在里面,一般我們想讓程序在里面執(zhí)行到一半時(shí),經(jīng)過(guò)判斷或者完成某種操作后停止執(zhí)行后面的代碼,會(huì)用結(jié)束掉。可以在中間加入多個(gè)作為斷點(diǎn),控制邏輯的流程。 在JavaScript里面,一般我們想讓程序在function里面執(zhí)行到一半時(shí),經(jīng)過(guò)判斷或者完成某種操作后停止執(zhí)行后面的代碼,會(huì)用return結(jié)束掉function。 例如: //去除前后的空格function spaceWord(vRet...

    Batkid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<