遍歷數組、對象的方法

前提:前端最重要的任務的經常要處理數據的!經常的是列表的遍歷問題!例如遍歷數組、對象的方法!!!
具體遍歷數組、對象的方法:
遍歷數組
遍歷對象
一、遍歷數組
1、普通for循環(huán)

2、forEach循環(huán)

forEach接收一個回調函數作為參數,而這個回調函數有接受三個參數,作為參數。item是每個元素,index元素在數組中的下標,arr數組本身。? ?沒有返回值!
3、map循環(huán)

map的用法和forEach差不多。但是map是有返回值的。他的返回值是一個新數組,map方法不改變原數組。是映射,即數組元素的映射。它提供一個回調函數,參數依次為處于當前循環(huán)的元素、該元素下標、數組本身,三者均可選。默認返回一個數組,這個新數組的每一個元素都是原數組元素執(zhí)行了回調函數之后的返回值。
4、for–of循環(huán)

只有是現實iterator 接口的才能用for---of.對象不能
es6新增了interator接口的概念,目的是對于所有數據結構提供一種統(tǒng)一的訪問機制,這種訪問機制就是for of。
即:所有有interator接口的數據,都能用for of遍歷。常見的包括數組、類數組、Set、Map等都有interator接口。
5、filter過濾

filter,過濾,即對數組元素的一個條件篩選。它提供一個回調函數,參數依次為處于當前循環(huán)的元素、該元素下標、數組本身,三者均可選。默認返回一個數組,原數組的元素執(zhí)行了回調函數之后返回值若為true,則會將這個元素放入返回的數組中。
filter方法不改變原數組
6、every遍歷

every()是對數組中的每一項運行給定函數,如果該函數對每一項返回true,則返回true。(全部符合條件)
7、some遍歷

some()是對數組中每一項運行指定函數,如果該函數對任一項返回true,則返回true。(只要有一個符合)
some方法和every的用法非常類似,提供一個回調函數,參數依次為處于當前循環(huán)的元素、該元素下標、數組本身,三者均可選。
數組的每一個元素都會執(zhí)行回調函數,當返回值全部為true時,every方法會返回true,只要有一個為false,every方法返回false。當有一個為true時,some方法返回true,當全部為false時,every方法返回false。
some、every方法不改變原數組。
8、reduce

reduce方法有兩個參數,第一個參數是一個回調函數(必須),第二個參數是初始值(可選)。回調函數有四個參數,依次為本輪循環(huán)的累計值、當前循環(huán)的元素(必須),該元素的下標(可選),數組本身(可選)。
reduce方法,會讓數組的每一個元素都執(zhí)行一次回調函數,并將上一次循環(huán)時回調函數的返回值作為下一次循環(huán)的初始值,最后將這個結果返回。
如果沒有初始值,則reduce會將數組的第一個元素作為循環(huán)開始的初始值,第二個元素開始執(zhí)行回調函數。
最常用、最簡單的場景,是數組元素的累加、累乘
reduce方法不改變原數組

reduceRight()方法的功能和reduce()功能是一樣的,不同的是reduceRight()從數組的末尾向前將數組中的數組項做累加。
reduceRight()首次調用回調函數callbackfn時,prevValue 和 curValue 可以是兩個值之一。如果調用 reduceRight() 時提供了 initialValue 參數,則 prevValue 等于 initialValue,curValue 等于數組中的最后一個值。如果沒有提供 initialValue 參數,則 prevValue 等于數組最后一個值, curValue 等于數組中倒數第二個值
10、find

find()方法返回數組中符合測試函數條件的第一個元素。否則返回undefined
11、findIndex

?對于數組中的每個元素,findIndex 方法都會調用一次回調函數(采用升序索引順序),直到有元素返回 true。只要有一個元素返回 true,findIndex 立即返回該返回 true 的元素的索引值。如果數組中沒有任何元素返回 true,則 findIndex 返回 -1。findIndex 不會改變數組對象!!!!!

二、遍歷對象
1、vue中v-for遍歷對象

2、for…in 遍歷數組和對象都可以

3、Object的方法



4、Object.getOwnPropertyNames(obj)

5、使用Reflect.ownKeys(obj)遍歷

