數組中用於遍歷的方法數組
一,for循環數據結構
語法:for(let ; ; )函數
二,for in:經常使用與遍歷對象對象
語法:for( let i in obj)字符串
三,forEach()get
做用:調用數組中的每一個元素,並將元素傳遞給回調函數進行執行,無返回值。回調函數
語法:array.forEach(function(currentValue, index, arr));io
四,for of:用於遍歷值console
語法:
for (var value of arr){
console.log(value);
}for循環
注意:for in和for of的區別
for in遍歷下標,for of遍歷值。
五,map()
做用:用於處理數組,並用return返回結果,結果組成一個新的數組返回。
語法:arr.map(function(value,key,arr){
...
})
六,filter()
做用:是一個過濾函數,須要在循環的時候判斷一下是true仍是false,是true纔會返回本來數組的這個元素。
語法:
let arr1 = [1,2,3];
let arr2 = arr1.filter((value,key,arr) => {
console.log(value) // 1,2,3
console.log(key) // 0,1,2
console.log(arr) // [1,2,3]
return value >= 3 ? false : true;
})
console.log(arr1); // [ 1, 2, 3 ]
console.log(arr2); // [ 1, 2 ]
注意:
數組利用filter加上箭頭函數去重
let arr = [1, 2, 2, 3, 4, 5, 5, 6];
let newArr = arr.filter((x, index,self)=>self.indexOf(x)===index)
console.log(newArr)
七,some():
和filter功能相同,不一樣的是,它返回boolean值,用於檢查數組中是否存在某對象.
語法:
if (arr.some(list => list.value === 1)) {
console.log('執行了!')
}
ES6的三個新方法:entries(),keys()和values() —— 用於遍歷對象,它們都返回一個遍歷器對象,能夠和for...of循環進行組合,惟一的區別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。
一,keys():遍歷對象的鍵值,返回一個由鍵值組成的數組。
做用:獲取對象的鍵值,並返回一個數組。
語法:
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}
var obj1 = {"name":"lucas","age":22};
console.log(Object.keys(obj1)) //["name", "age"]
二,values()遍歷對象的值,並做爲數組返回。
做用:獲取對象的值,並做爲數組返回。
語法:
let obj = { a: 1, b: 2, c: 3 };
for (let value of Object.values(obj)) {
console.log(value); // 1, 2, 3
}
var obj1 = {"name":"lucas",age:22};
console.log(Object.values(obj1)) //["lucas", 22]
三,entries(),entries方法的一個用處是,將對象轉爲真正的Map結構。
entries()函數會將 key 和 value 以二維數組的形式都返回。
做用:初始化map結構的時候,能夠做爲輸入。
語法:
var obj2 = {foo:'bar',baz:42};//普通對象
var map2 = new Map(Object.entries(obj2));//entries()處理對象爲二維數組並做爲map的初始化值。
console.log(map2); //map{"foo" => "bar", "baz" => 42}
補充:
map數據結構是一種對象的解構,對象中的鍵再也不只是字符串,而是任意的數據類型均可以當鍵,是一種廣義的鍵。
聲明map解構:
let m = new Map();//map數據結構有四種方法,set,get,has,delete
m.set(123,'abc');//添加鍵值對
console.log(m.get(123));//獲取值
m.has(123);//-->true查找對象中是否有
m.delete(123);//刪除123鍵值對,成功刪除返回true,失敗返回false