屬性的遍歷
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...