JavaScript中更好的迴圈寫法大全
在這篇文章中,我們將介紹for迴圈的形式,陣列方法,使用它們可以使程式碼更簡單,更易讀。當您想要操縱陣列或物件中的資料時,這些迴圈/方法很有用。
for in迴圈
使用這種迴圈,您不必手動迭代陣列索引和物件key。
//iterating over an array let arr = [1, 2, 3, 4, 5] for (let index in arr) { console.log(arr[index]) } // Output: 1,2,3,4,5 //iterating over object keys let obj = { id: 1, msg: 'hello' } for (let key in obj) { console.log(obj[key]) } // Output: 1, hello |
for迴圈
使用此迴圈,您可以獲取特定索引處的值。此迴圈僅適用於陣列。
for (let val of arr) { console.log(val) } // Output: 1,2,3,4,5 |
陣列方法
現在讓我們看一些陣列迴圈方法。處理陣列時,迴圈往往變得太大,我們必須明確地將專案推送到另一個陣列中,依此類推。以下方法可以更輕鬆地處理此類方案。以下方法將回撥函式作為將為陣列中的每個元素執行的引數。我們來看幾個例子。
1. 迭代陣列
您可以使用array.forEach()方法。For-each將回撥作為引數併為每個陣列元素執行。
// display index and value arr.forEach((value, index) => console.log(`Index = ${index} Value = ${value}`)) |
2.轉換陣列
要將現有陣列轉換為另一種形式,可以使用array.map()方法。map()方法將回撥作為引數並返回一個新陣列。新陣列中的元素將是回撥返回的值。
假設你有一個物件陣列,每個物件都有id,name。你想要一個只包含id的陣列。
迴圈:
let data = [ { id: 1, name: 'Phone', type: 'electronic' }, { id: 2, name: 'Laptop', type: 'electronic' }, { id: 3, name: 'Shirt', type: 'clothing' }, ] let ids = [] for (let i = 0; i < data.length; i++) { ids.push(data[i].id) } |
使用map:
let ids = data.map(function(val) { return val.id }) |
使用箭頭函式:
let ids = data.map(val => val.id) |
3.過濾陣列中的元素
要從陣列中過濾元素,可以使用array.filter()方法。filter()方法需要一個回撥,這個回撥將對陣列中的每個元素執行並返回一個包含過濾項的新陣列。如果回撥函式為給定元素返回true,則該元素將位於已過濾陣列中。
let electronics = data.filter(item => item.type == 'electronic') |
4.在陣列中搜尋元素
如果要在陣列中搜尋元素,可以使用array.find()方法。與此處討論的所有其他方法一樣,此方法也需要回撥。回撥函式應該返回true或false。回撥返回true的第一個值將是此方法的輸出。如果沒有匹配,則該函式將返回undefined。
data.find(val => val.name == 'Phone') |
5.從陣列中獲取單個值
要從陣列中獲取單個值,可以使用array.reduce()方法。reduce()方法採用回撥函式,初始值作為引數。回撥實習生有一個累加器,currentValue作為強制引數。累加器包含從先前執行的回撥中獲得的值,currentValue是正在處理的陣列元素。
陣列的總和和乘積:
let arr = [1, 2, 3, 4, 5] //sum of array elements arr.reduce((accumulator, currentValue) => (acc += curr), 0) // where 0 is the initial value // Output: 15 // product of array elements arr.reduce((acc, curr) => (acc *= curr), 1) // Output: 120 |
6.檢查陣列中至少一個元素的條件是否為真。
使用array.some()方法。如果條件對陣列中的至少一個元素為真,則此方法將返回true,否則返回false。
let friends = [13, 15, 16, 18] //ages of group of friends // checking if at least one of them is 18 or above arr.some(val => val >= 18) |
7.檢查陣列中所有元素的條件是否為真
使用array.every()方法。如果條件對於陣列中的所有元素為true,則此方法將返回true,否則將返回false。
let giftPrices = [300, 350, 399, 400] let budgetPerGift = 450 let checkBudget = price => price <= budgetPerGift giftPrices.every(checkBudget) // true budgetPerGift = 300 giftPrices.every(checkBudget) // false |
需要注意:
- 對於迴圈,陣列方法比正常情況略慢,但它們提供了許多優點,並且隨著JS引擎的更改,它們的效能將得到改善。
- 我們上面討論的所有方法(some(),find()除外)都在整個陣列上執行。如果您不想這樣做,那麼這些方法對您沒用。你不能使用break來停止回撥。
相關文章
- JavaScript中的while迴圈JavaScriptWhile
- 理解 JavaScript 中的迴圈JavaScript
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- Javascript中的迴圈優化JavaScript優化
- 深入瞭解 JavaScript 中的 for 迴圈JavaScript
- JavaScript的map迴圈、forEach迴圈、filter迴圈、reduce迴圈、reduceRight迴圈JavaScriptFilter
- 迴圈註冊事件的幾種寫法事件
- JavaScript for of 迴圈JavaScript
- javascript迴圈JavaScript
- javaScript for迴圈JavaScript
- 【轉】Promise迴圈序列執行寫法Promise
- 在Vue.js編寫更好的v-for迴圈的6種技巧Vue.js
- JavaScript如何中斷迴圈執行?JavaScript
- JavaScript中的12種迴圈遍歷方法JavaScript
- JavaScript 中 for in 迴圈和陣列的問題JavaScript陣列
- 無迴圈 JavaScriptJavaScript
- dotnet C# 分享基礎 for 迴圈的寫法C#
- 迴圈中的非同步&&迴圈中的閉包非同步
- 聊聊Javascript的事件迴圈JavaScript事件
- JavaScript的迴圈方式(1)JavaScript
- 記錄在JavaScript中對事件迴圈的理解JavaScript事件
- c++中的一些迴圈語法C++
- JavaScript for 迴圈語句JavaScript
- 理解javascript事件迴圈JavaScript事件
- JavaScript 模組的迴圈載入JavaScript
- 幫助你更好的理解Spring迴圈依賴Spring
- 如何通過 JavaScript 編寫一個遊戲主迴圈JavaScript遊戲
- JavaScript中迴圈遍歷JSON響應!JavaScriptJSON
- 探索 JavaScript 中的依賴管理及迴圈依賴JavaScript
- 前端 JavaScript 中的三種 for 迴圈語句總結前端JavaScript
- 在 JavaScript 中優雅的提取迴圈內的資料JavaScript
- 寫一個更好的Javascript DOM庫JavaScript
- Javascript 事件迴圈event loopJavaScript事件OOP
- JavaScript事件迴圈機制JavaScript事件
- JavaScript事件迴圈(Event Loop)JavaScript事件OOP
- JavaScript跳出for迴圈語句JavaScript
- 05--JavaScript--1.4迴圈JavaScript
- JavaScript 事件迴圈機制JavaScript事件