題記
陣列遍歷
按照個人的理解,又可以分為,js 語句遍歷 和 陣列api 遍歷;js 語句遍歷顧名思義是使用js的迴圈語句,例如 for迴圈語句,for...in語句等等;陣列api遍歷則是使用陣列的api方法進行遍歷。
陣列api
es5為陣列定義了5個迭代方法,每個方法都接受兩個引數:要在每一項上執行的函式和執行該函式的作用域物件(這個值可選)。該函式會接受三個引數:陣列項的值、該項在陣列中的位置、和陣列物件本身。
1. every():對陣列中的每一項執行給定函式,如果該函式對每一項都返回 true,則返回 true。
2. filter():對陣列中的每一項執行給定函式,返回該函式會返回 true 的項組成的陣列。
3. foreach():對陣列中的每一項執行給定函式。這個方法沒有返回值。
4. map():對陣列中的每一項執行給定函式,返回每次函式呼叫的結果組成的陣列。
5. some():對陣列中的每一項執行給定函式,如果該函式對任一項返回 true,則返回 true。
值得一提的是,以上方法都不會修改陣列中的包含的值。在專案中比較常用的有foreach , map , filter。
es6擴充套件了三個新的apientries()
,keys()
和values()
——用於遍歷陣列。它們都返回乙個遍歷器物件,可以用for...of
迴圈進行遍歷,唯一的區別是keys()
是對鍵名的遍歷、values()
是對鍵值的遍歷,entries()
是對鍵值對的遍歷。
for (let index of ['a', 'b'].keys()) // 0// 1for (let elem of ['a', 'b'].values()) // 'a'// 'b'for (let [index, elem] of ['a', 'b'].entries())
如果不使用for...of
迴圈,可以手動呼叫遍歷器物件的next
方法,進行遍歷。
let letter = ['a', 'b', 'c'];let entries = letter.entries();console.log(entries.next().value); // [0, 'a']
物件的遍歷物件的遍歷一般是為了遍歷物件中的可列舉屬性,通常都是使用js語句,for...in或者for...of進行遍歷,有時候為了方便,也會使用object.keys()獲取物件的可列舉屬性後進行其他操作;es6中有以下幾個方法可以獲取物件的屬性:
object.keys(obj)
object.getownpropertynames(obj)
object.getownpropertysymbols(obj)
reflect.ownkeys(obj)
有興趣的話可以自己去看看這些方法具體有哪些區別。
for...in 和 for ... of的區別
for ... in
是為遍歷物件屬性而構建的,不建議與陣列一起使用,陣列可以用array.prototype.foreach()
和for ... of
。for...in 通常用於檢查物件屬性。
for... of 基本上可以遍歷所有的可迭代物件,例如 array,map,set,string,typedarray,arguments物件等等。甚至可以迭代dom集合。
他們的主要區別在於迭代方式。
for...in 可以任意順序迭代物件的可列舉屬性。
for...of 遍歷可迭代物件中的具體資料。
有的文章說 for...in 遍歷的時候會沿著原型物件查詢是否有這屬性,明白了上面說的內容,似乎就可以解釋他為什麼會這麼說了...
python字典鍵值對的新增和遍歷
dic dic name zhangsan dic key age value 30 dic key value dic 這裡可以看到字典中的資料並不是按先後順序排列的,如果有興趣,可以搜一搜資料結構中的 雜湊表 2019 02 22更新開始 從python3.7開始,字典按照插入順序,實現了有序。...
陣列和物件的遍歷
物件的遍歷 1 使用object.keys 遍歷 返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含symbol屬性 var obj object.keys obj foreach function key 2 使用for in 遍歷 迴圈遍歷物件自身的和繼承的可列舉屬性 不含symbo...
陣列物件 react裡陣列和物件的遍歷渲染
在vue裡遍歷渲染陣列列表我們用的v for,而在react裡遍歷渲染陣列列表我們直接用陣列的map方法,當然也可以用for.in或陣列的foreach方法等。react列表渲染title script script script head div react列表渲染 let arr 打王者 刷抖音...