ES6和ES5中的遍歷

2021-07-23 04:01:54 字數 2798 閱讀 7762

屬性的遍歷

es6一共有5種方法可以遍歷物件的屬性。

(1)for…in

for…in迴圈遍歷物件自身的和繼承的可列舉屬性(不含symbol屬性)。

(2)object.keys(obj)

object.keys返回乙個陣列,包括物件自身的(不含繼承的)所有可列舉屬性(不含symbol屬性)。

(3)object.getownpropertynames(obj)

object.getownpropertynames返回乙個陣列,包含物件自身的所有屬性(不含symbol屬性,但是包括不可列舉屬性)。

(4)object.getownpropertysymbols(obj)

object.getownpropertysymbols返回乙個陣列,包含物件自身的所有symbol屬性。

(5)reflect.ownkeys(obj)

reflect.ownkeys返回乙個陣列,包含物件自身的所有屬性,不管是屬性名是symbol或字串,也不管是否可列舉。

以上的5種方法遍歷物件的屬性,都遵守同樣的屬性遍歷的次序規則。

首先遍歷所有屬性名為數值的屬性,按照數字排序。

其次遍歷所有屬性名為字串的屬性,按照生成時間排序。

最後遍歷所有屬性名為symbol值的屬性,按照生成時間排序。

reflect.ownkeys()

// ['2', '10', 'b', 'a', symbol()]

上面**中,reflect.ownkeys方法返回乙個陣列,包含了引數物件的所有屬性。這個陣列的屬性次序是這樣的,首先是數值屬性2和10,其次是字串屬性b和a,最後是symbol屬性。

資料結構的遍歷:

一、array:

es5:

(1)array.prototype.foreach(function(item,index,array))

(2)array.prototype.map(function(value,index,array))對映為乙個新陣列

(3)array.prototype.some(function(item))陣列中某一項滿足則停止執行,並且返回true

(4)array.prototype.every(function(item))陣列中有一項不滿足則停止執行,並且返回false.

(5)array.prototype.filter(function(item))返回過濾後的新陣列

(6)array.prototype.indexof(item)

(7)array.prototype.lastindexof(item)

(8)array.prototype.reduce(function (previous, current, index, array) )

(9)array.prototype.reduceright同上,但是index的初始值為array.length-1

es6:

(1)array.from(parameter),用的最多應該是將set轉化為array,或者將元素選擇器的結果轉化為陣列

(2)array.of(parameter)消除new array(parameter)由於引數個數不同而出現的過載

(3)array.prototype.copywithin(target, start = 0, end = this.length)沒想到有什麼好用的

(4)array.prototype.find(function(value, index, arr) )找到第乙個返回值為true的成員

(5)array.prototype.findindex(function(value.index,arr))作用同上,返回index

(6)array.prototype.keys()獲取鍵名遍歷器

(7)array.prototype.values()獲取鍵值遍歷器

(8)array.prototype.entries()獲取鍵值對遍歷器

二、set資料結構

該資料結構更新或建立時會去重,類似===但是在這裡nan和nan是相等的

(1)set.prototype.add(parameter)

(2)set.prototype.delete(parameter)

(3)set.prototype.has(parameter)

(4)set.prototype.clear()

(5)set.prototype.keys()返回鍵名的遍歷器

(6)set.prototype.values()返回鍵值遍歷器

(7)set.prototype.entries()返回鍵值對遍歷器

(8)set.prototype.foreach(function(value.key,set){})遍歷

三、map資料結構

鍵值對的集合,但是鍵名可以為物件,當鍵名為物件時判斷他的記憶體位址相同則認為鍵名相同

(1)map.prototype.set(key,value)

(2)map.prototype.get(key)

(3)map.prototype.has(key)

(4)map.prototype.delete(key)

(5)map.prototype.clear()

(6)map.prototype.keys()

(7)map.prototype.values()

(8)map.prototype.entries()

(9)map.prototype.foreach(function(value,key,map))

ES6和ES5的區別

es6和es5的區別?1 定義變數 es5中用 var function es6中用 let const class import 沒有變數提公升 同乙個作用域中不可重複宣告 不會給window增加全域性屬性 會形成塊級作用域 const設定的變數值是不可修改的 理解為常量 暫時性死區 2 解構賦值...

es6和es5的區別

1 es6新增了let命令,用來宣告變數。它的用法類似於var,但是所宣告的變數,只在let命令所在的 塊內有效。a b let不像var存在變數提公升,即變數一定要宣告之後才能使用 2 塊級作用域 es5只有全域性作用域和函式作用域,沒有塊級作用域 3 變數的結構賦值 var a,b,c 1,2,...

es5和es6的區別

最近在看阮一峰的 ecmascript6入門 講真,這本書對初學者真的很有幫助,在這裡也推薦給大家。接下來,我要說的一些例子也大多 於這本書,如果對這本書感興趣的小夥伴,也可以戳這裡哦!1.新增let命令 在es6之前,我們宣告變數都是通過var,es6新增的let命令與var類似,與之不同是,le...