循環遍歷數組的時候,你還在用for語句走天下嗎?python
我曾經就是for走天下,最後發現本身給本身挖了一個巨大的坑,層層嵌套的循環,總要花大量的時間去捋清各類邏輯關係,很容易邏輯混亂。終於你通過千辛萬苦把邏輯捋清了,實現了功能需求。但是這時候接踵而來的問題來了?性能,擴展性,重用性....等等,合着我費了九牛二虎之力白費了。這時候一把鼻涕一把淚,盡是辛酸;數組
這時候某人說,有不少好用的API,你爲何不去用呢?此刻恍然大悟。瀏覽器
Array.prototype.forEach() : 方法對數組的每一個元素執行一次提供的函數。函數
array.forEach(callback(currentValue, index, array){ //do something }, this)
參數
callback:爲數組中每一個元素執行的函數,該函數接收三個參數:性能
currentValue(當前值):數組中正在處理的當前元素。測試
index(索引): 數組中正在處理的當前元素的索引。this
array: forEach()方法正在操做的數組。spa
thisArg可選:可選參數。當執行回調 函數時用做this的值(參考對象)。prototype
返回值:undefined.調試
Array.prototype.filter(): 方法建立一個新數組, 其包含經過所提供函數實現的測試的全部元素。
const new_array = arr.filter(callback[, thisArg])
callback :用來測試數組的每一個元素的函數。調用時使用參數 (element, index, array)。返回true表示保留該元素(經過測試),false則不保留。
thisArg : 可選。執行 callback 時的用於 this 的值。
返回值: 一個新的經過測試的元素的集合的數組
Array.prototype.map(): 建立一個新數組,其結果是該數組中的每一個元素都調用一個提供的函數後返回的結果。
let new_array = arr.map(function callback(currentValue, index, array) { // Return element for new_array }[, thisArg])
callback : 生成新數組元素的函數,使用三個參數:
currentValue : callback 的第一個參數,數組中正在處理的當前元素。
index : callback 的第二個參數,數組中正在處理的當前元素的索引。
array: callback 的第三個參數,map 方法被調用的數組。
thisArg:可選的。執行 callback 函數時 使用的this 值。
Array.prototype.every(): 若是數組中的每一個元素都知足測試函數,則返回 true,不然返回 false。
Array.prototype.some(): 若是數組中至少有一個元素知足測試函數,則返回 true,不然返回 false。
<span style='color:rgb(230,3,135);'> 也許明天咱們不在用for走天下,取而替代的是 for of</span>
for...of 語句在可迭代對象(包括 Array,Map,Set,String,TypedArray,arguments 對象等等)上建立一個迭代循環,調用自定義迭代鉤子,併爲每一個不一樣屬性的值執行語句。
for ( variable of iterable) 迭代Array: let iterable = [10, 20, 30]; for (let value of iterable) { console.log(value+1); }// 11,21,31 迭代String: let iterable = "boo"; for (let value of iterable) { console.log(value); }// a,b,c
variable: 在每次迭代中,將不一樣屬性的值分配給變量。
iterable:可枚舉其枚舉屬性的對象。
for...of與for...in的區別:
for...in 語句以原始插入順序迭代對象的可枚舉屬性。針對object
for...of 語句遍歷可迭代對象定義要迭代的數據。對於Array,Map,Set,String,TypedArray,arguments 對象等等
在瀏覽器中調試一遍效果更佳
對象循環的話目前我知道 for in 是最好的選擇啦!用法和 for of 同樣
對象是類數組對象,固然咱們也能夠把對象轉化爲數組:
1.Object.keys():返回一個數組,包含指定對象的全部自有可遍歷屬性的名稱
2.類數組轉化爲數組:Array.prototype.slice.call(arguments)
3.Array.from() :對僞數組或可迭代對象(包括arguments Array,Map,Set,String...)轉換成數組對象。
...未完待續