成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

對象和數(shù)組的遍歷

neroneroffy / 1920人閱讀

摘要:數(shù)組遍歷普通循環(huán)代碼如下注有待優(yōu)化的空間優(yōu)化循環(huán)注將長度緩存起來,避免重復(fù)獲取,基本是性能最高的一種數(shù)組遍歷方法。循環(huán)的使用范圍包括數(shù)組,,,類數(shù)組對象如對象,對象等,對象,以及字符串等對象的屬性遍歷關(guān)于對象的遍歷,主要是指其屬性的遍歷。

數(shù)組遍歷 1.普通for循環(huán)

代碼如下

for(var i=0;i

注:有待優(yōu)化的空間

2.優(yōu)化for循環(huán)
for(var i=0,len=arr.length;i

注:將長度緩存起來,避免重復(fù)獲取,基本是性能最高的一種數(shù)組遍歷方法。(在遍歷長度較多的數(shù)組時,才會顯示優(yōu)勢)

3. forEach循環(huán)
arr.forEach(function(el){
    //do something here
})

注:數(shù)組自帶的方法

4. for in 方法
var arr=[2,3,4]
for(var item in arr){
    console.log(item)// 0,1,2
}

注:效率很低.該方法獲取的是鍵名。應(yīng)用于array時,為下標(biāo)index,應(yīng)用到對象時,為key。下文提到的for of循環(huán)獲取到的是鍵值。

5. map方法
arr.map(function(item){
    //do something here
})

注:方式優(yōu)雅,效率很低,還不如forEach

6. for of 循環(huán)(ES6)
for(var item of arr){
 // do something here
}

注:是ES6所支持的方法,凡是具有iterator接口的數(shù)據(jù)接口,都可以使用for of遍歷他的成員。其內(nèi)部的實(shí)現(xiàn)方法是調(diào)用數(shù)據(jù)結(jié)構(gòu)的Symbol.iterator 方法。for of循環(huán)的使用范圍包括:數(shù)組,Set,Map,類數(shù)組對象(如arguments對象,DOM Nodelist對象等),Generator對象,以及字符串等

對象的屬性遍歷

關(guān)于對象的遍歷,主要是指其屬性的遍歷。以下總結(jié)6種方法來遍歷對象的屬性

1. for in

for in循環(huán)遍歷對象自身可繼承的 可枚舉屬性(不包含Symbol屬性)

2. Object.keys(obj)

該方法返回一個數(shù)組,包含對象自身的(不包含繼承的)所有可枚舉的屬性(不包含Symbol屬性)

注:大多數(shù)情況下,我們只關(guān)心對象自身的屬性,引入繼承的屬性會讓問題 復(fù)雜化。所以盡量不要用for in循環(huán)而使用Object.keys()代替

3. Object.getOwnPropertyNames(obj)

包含對象自身的所有屬性(不包含Symbol屬性,但是包含不可枚舉的屬性)

4. Object.getOwnPropertySymbols(obj)

返回一個數(shù)組,包含對象自身的所有Sybmol屬性。

5. Reflect.ownKeys(obj)

返回一個數(shù)組,包含對象自身的所有屬性,不管屬性名是否是Symbol或字符串,也不管是否是可枚舉的

6. Reflect.enumerate(obj)

與for in循環(huán)相同

擴(kuò)展閱讀:屬性的可枚舉性

描述

對象的每個屬性都有一個描述對象(Descriptor),用于描述該屬性的行為。

獲取方法

通過Object.getOwnPropertyDescriptor方法可以獲取該屬性的描述對象

var a={A:1}
Object.getOwnPropertyDescriptor(a,"A");
//{
//    configurable:true,
//    enumerable:true,可枚舉性,true
//    value:1,
//    writable:true
//}

引入目的

當(dāng)改屬性為false時,標(biāo)示某些操作會忽略這個屬性:

for in 循環(huán)

Object.keys()

JSON.stringify()

Object.assign()

Reflect.enumerate()

實(shí)際上,引入改屬性的目的,就是為了讓某些屬性能夠規(guī)避掉for in循環(huán)
另外,ES6種規(guī)定,所有Class原型上的方法都是不可枚舉的。

參考文獻(xiàn):
阮一峰:《ES6標(biāo)準(zhǔn)入門》

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88109.html

相關(guān)文章

  • JavaScript:遍歷

    摘要:中可以實(shí)現(xiàn)遍歷的數(shù)據(jù)類型主要是對象,其中包括普通對象與數(shù)組。遍歷器是一種接口,為各種不同的數(shù)據(jù)結(jié)構(gòu)提供統(tǒng)一的訪問機(jī)制。實(shí)例五遍歷器對象實(shí)例五是的遍歷過程,通過手動調(diào)用其對象的方法實(shí)現(xiàn)信息獲取。為每個數(shù)組元素執(zhí)行函數(shù)。 前言 ??將依據(jù)自身痛點(diǎn)學(xué)習(xí),計(jì)劃對原生JavaScript寫一個系統(tǒng),本文為第一篇,感興趣的同學(xué)可以關(guān)注個人公眾號:ZeroToOneMe,或者github博客,將持續(xù)...

    ThinkSNS 評論0 收藏0
  • Js之淺拷貝深拷貝與對象數(shù)組遍歷

    摘要:判斷是深拷貝對象還是數(shù)組如果要拷貝的對象的屬性依然是個復(fù)合類型,遞歸運(yùn)用遞歸,當(dāng)要拷貝的對象或者數(shù)組的屬性依然是個對象或者數(shù)組時,遞歸調(diào)用。遍歷對象聊完了深拷貝和淺拷貝,接下來說一下遍歷。 在js這門語言中,數(shù)據(jù)存放在堆中,而數(shù)據(jù)的引用的存放在棧中。 淺拷貝 我們說的淺拷貝,指的是,引用地址的拷貝,棧中兩塊不同的引用地址都指向了堆中同樣一塊區(qū)域。所以,我們通過一個地址修改了堆中的數(shù)據(jù),...

    liangzai_cool 評論0 收藏0
  • jS:關(guān)于對象遍歷數(shù)組遍歷那些事

    摘要:如圖遍歷數(shù)組遍歷數(shù)組元素并以某種方式處理每個元素是一個常見的操作。如圖不過,里的功能比較強(qiáng)大,可以遍歷而且返回值是的則被省略掉總結(jié)遍歷對象,遍歷出來的是鍵名,而不是鍵值,參數(shù)必須是對象。 可能是由于職業(yè)的關(guān)系,下班之后完全不想Open PC,但很多知識點(diǎn)有必要自己做個小小總結(jié)。本人之前對原生Array和Object完全沒概念。 遍歷對象的方法: Object.keys(Object)...

    qingshanli1988 評論0 收藏0
  • Array迭代器

    摘要:如上圖所示,本文主要闡述了的四種迭代器,,和的功能和區(qū)別動態(tài)數(shù)組每次遍歷開始時都會重新計(jì)算一次數(shù)組的長度稀疏數(shù)組不會跳過無效數(shù)組動態(tài)數(shù)組與一樣,會遍歷到新增加的元素稀疏數(shù)組也不會跳過無效數(shù)組特點(diǎn)可以遍歷字符串可以遍歷類數(shù)組對象對象可 showImg(https://segmentfault.com/img/bV4PxL?w=3134&h=932); 如上圖所示,本文主要闡述了Array...

    Turbo 評論0 收藏0
  • JavaScript循環(huán)遍歷你會用哪些?

    摘要:總結(jié)中的循環(huán)遍歷定義一個數(shù)組和對象經(jīng)常用來遍歷數(shù)組元素遍歷值為數(shù)組元素索引用來遍歷數(shù)組元素第一個參數(shù)為數(shù)組元素,第二個參數(shù)為數(shù)組元素索引,第三個參數(shù)為數(shù)組本身可選沒有返回值用來遍歷數(shù)組元素第一個參數(shù)為數(shù)組元素,第二個參數(shù)為數(shù)組元素索引,第三 總結(jié)JavaScript中的循環(huán)遍歷 定義一個數(shù)組和對象 const arr = [a, b, c, d, e, f]; const obj = ...

    CHENGKANG 評論0 收藏0
  • 數(shù)據(jù)類型 數(shù)組

    摘要:數(shù)組的本質(zhì)數(shù)組屬于一種特殊的對象。運(yùn)算符會返回數(shù)組的類型是對象的鍵名一律為字符串,所以,數(shù)組的鍵名其實(shí)也是字符串。數(shù)組的空位讀取遍歷無兩個逗號之間沒有任何值,我們稱該數(shù)組存在空位。數(shù)組的方法可以將類似數(shù)組的對象變成真正的數(shù)組。 定義數(shù)組的本質(zhì)length 屬性in 運(yùn)算符for...in 循環(huán)和數(shù)組的遍歷數(shù)組的空位類似數(shù)組的對象參考鏈接 1.定義 任何類型的數(shù)據(jù),都可以放入數(shù)組。 va...

    Charlie_Jade 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<