最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript數(shù)組遍歷的七種方法詳解

 更新時(shí)間:2026年03月06日 09:51:40   作者:紅色的小鱷魚  
本文聚焦 JavaScript 中最核心的 7 個(gè)數(shù)組遍歷方法,從功能定義、參數(shù)、返回值、是否改原數(shù)組、實(shí)戰(zhàn)示例五個(gè)維度拆解,幫你徹底分清不同場(chǎng)景該用哪種方法,需要的朋友可以參考下

一、forEach ():純遍歷執(zhí)行操作

遍歷數(shù)組的每一個(gè)元素,并為每個(gè)元素執(zhí)行一次指定的回調(diào)函數(shù)(無(wú)返回值,僅做 “執(zhí)行操作”)。

const arr = [1, 2, 3];
// 遍歷打印每個(gè)元素和索引
arr.forEach((item, index) => {
  console.log(`索引${index}的值:${item}`);
});
// 輸出:
// 索引0的值:1
// 索引1的值:2
// 索引2的值:3

// 注意:forEach無(wú)法通過break/return中斷遍歷(return僅跳過當(dāng)前次循環(huán))
arr.forEach(item => {
  if (item === 2) return; // 僅跳過2,不會(huì)終止遍歷
  console.log(item); // 輸出1、3
});

僅需遍歷數(shù)組執(zhí)行操作(如打印、修改外部變量、DOM 操作),不需要返回新數(shù)組 / 值的場(chǎng)景。

二、map ():遍歷并返回新數(shù)組

遍歷數(shù)組,為每個(gè)元素執(zhí)行回調(diào)函數(shù),將回調(diào)的返回值收集成一個(gè)新數(shù)組返回(新數(shù)組長(zhǎng)度和原數(shù)組完全一致)。

const newArr = arr.map((item, index, array) => {
  // 處理邏輯,返回新值
  return 處理后的值;
}, thisArg);
const arr = [1, 2, 3];
// 數(shù)組元素翻倍
const doubleArr = arr.map(item => item * 2);
console.log(doubleArr); // [2, 4, 6]
console.log(arr); // [1,2,3](原數(shù)組不變)

// 處理對(duì)象數(shù)組
const users = [{ name: '張三', age: 20 }, { name: '李四', age: 25 }];
const userNames = users.map(item => item.name);
console.log(userNames); // ['張三', '李四']

需要基于原數(shù)組生成一個(gè)新數(shù)組(如數(shù)據(jù)格式轉(zhuǎn)換、值計(jì)算),且新數(shù)組長(zhǎng)度和原數(shù)組一致的場(chǎng)景。

三、filter ():篩選符合條件的元素

遍歷數(shù)組,篩選出回調(diào)返回 true的元素,將這些元素組成新數(shù)組返回(新數(shù)組長(zhǎng)度≤原數(shù)組)。

const newArr = arr.filter((item, index, array) => {
  // 返回布爾值,true則保留當(dāng)前元素
  return 條件表達(dá)式;
}, thisArg);
const arr = [1, 2, 3, 4, 5];
// 篩選偶數(shù)
const evenArr = arr.filter(item => item % 2 === 0);
console.log(evenArr); // [2, 4]

// 篩選對(duì)象數(shù)組
const users = [
  { name: '張三', age: 20 },
  { name: '李四', age: 25 },
  { name: '王五', age: 17 }
];
// 篩選成年用戶
const adultUsers = users.filter(item => item.age >= 18);
console.log(adultUsers); // [{name: '張三', age:20}, {name: '李四', age:25}]

需要從數(shù)組中 “過濾 / 篩選” 出符合條件的元素(如篩選列表、過濾無(wú)效數(shù)據(jù))。

四、reduce ():聚合數(shù)組為單個(gè)值

遍歷數(shù)組,將每個(gè)元素依次傳入回調(diào)函數(shù),通過 “累加器” 將數(shù)組聚合為單個(gè)值(數(shù)字、對(duì)象、數(shù)組等),是最靈活的遍歷方法。

const result = arr.reduce((accumulator, currentValue, currentIndex, array) => {
  // 聚合邏輯,返回新的累加器值
  return 新的accumulator;
}, initialValue);
const arr = [1, 2, 3, 4];
// 示例1:求和(基礎(chǔ)用法)
const sum = arr.reduce((acc, cur) => acc + cur, 0);
console.log(sum); // 10

// 示例2:求數(shù)組最大值
const max = arr.reduce((acc, cur) => acc > cur ? acc : cur, arr[0]);
console.log(max); // 4

// 示例3:聚合對(duì)象數(shù)組(統(tǒng)計(jì)總年齡)
const users = [{ name: '張三', age: 20 }, { name: '李四', age: 25 }];
const totalAge = users.reduce((acc, cur) => acc + cur.age, 0);
console.log(totalAge); // 45

// 示例4:將數(shù)組轉(zhuǎn)為對(duì)象
const arr2 = ['a', 'b', 'c'];
const obj = arr2.reduce((acc, cur, index) => {
  acc[`key${index}`] = cur;
  return acc;
}, {});
console.log(obj); // {key0: 'a', key1: 'b', key2: 'c'}

需要將數(shù)組 “匯總” 為單個(gè)值(求和、求最值、統(tǒng)計(jì)),或轉(zhuǎn)換為對(duì)象 / 嵌套結(jié)構(gòu)的場(chǎng)景。

五、every ():判斷所有元素是否滿足條件

遍歷數(shù)組,檢查所有元素是否都滿足回調(diào)的條件,只要有一個(gè)不滿足就返回 false(短路遍歷:找到不滿足的元素立即停止)。

const isAllPass = arr.every((item, index, array) => {
  return 條件表達(dá)式;
}, thisArg);
const arr = [2, 4, 6, 8];
// 判斷是否全是偶數(shù)
const isAllEven = arr.every(item => item % 2 === 0);
console.log(isAllEven); // true

const arr2 = [2, 4, 7, 8];
const isAllEven2 = arr2.every(item => item % 2 === 0);
console.log(isAllEven2); // false(7不滿足,遍歷到7就停止)

// 判斷對(duì)象數(shù)組所有元素是否成年
const users = [{ age: 20 }, { age: 25 }, { age: 17 }];
const isAllAdult = users.every(item => item.age >= 18);
console.log(isAllAdult); // false

需要驗(yàn)證 “數(shù)組所有元素都符合條件”(如表單驗(yàn)證、全選判斷)。

六、some ():判斷是否有元素滿足條件

遍歷數(shù)組,檢查是否存在至少一個(gè)元素滿足回調(diào)的條件,只要找到一個(gè)滿足就返回 true(短路遍歷:找到滿足的元素立即停止)。

const isHasPass = arr.some((item, index, array) => {
  return 條件表達(dá)式;
}, thisArg);
const arr = [1, 3, 5, 8];
// 判斷是否有偶數(shù)
const hasEven = arr.some(item => item % 2 === 0);
console.log(hasEven); // true(遍歷到8就停止)

const arr2 = [1, 3, 5, 7];
const hasEven2 = arr2.some(item => item % 2 === 0);
console.log(hasEven2); // false

// 判斷對(duì)象數(shù)組是否有未成年
const users = [{ age: 20 }, { age: 25 }, { age: 17 }];
const hasMinor = users.some(item => item.age < 18);
console.log(hasMinor); // true

需要驗(yàn)證 “數(shù)組中存在至少一個(gè)符合條件的元素”(如判斷是否有選中項(xiàng)、是否有異常數(shù)據(jù))。

七、find ():查找第一個(gè)符合條件的元素

遍歷數(shù)組,返回第一個(gè)滿足回調(diào)條件的元素;若沒有找到,返回 undefined(短路遍歷:找到后立即停止)。

const targetItem = arr.find((item, index, array) => {
  return 條件表達(dá)式;
}, thisArg);
const arr = [1, 2, 3, 4, 5];
// 查找第一個(gè)大于3的元素
const target = arr.find(item => item > 3);
console.log(target); // 4

// 查找對(duì)象數(shù)組中的元素
const users = [
  { id: 1, name: '張三' },
  { id: 2, name: '李四' },
  { id: 3, name: '王五' }
];
// 根據(jù)id查找用戶
const user = users.find(item => item.id === 2);
console.log(user); // {id: 2, name: '李四'}

// 找不到返回undefined
const user2 = users.find(item => item.id === 10);
console.log(user2); // undefined

需要從數(shù)組中 “查找單個(gè)元素”(如根據(jù) ID 找數(shù)據(jù)、找第一個(gè)符合條件的項(xiàng))。

總結(jié)

  • 無(wú)返回值僅執(zhí)行操作:用forEach;
  • 生成同長(zhǎng)度新數(shù)組:用map;
  • 篩選元素生成新數(shù)組:用filter;
  • 聚合為單個(gè)值:用reduce;
  • 判斷全滿足條件:用every;
  • 判斷是否有滿足條件:用some;
  • 查找第一個(gè)滿足條件的元素:用find。

所有方法均不修改原數(shù)組,且支持短路遍歷(every/some/find)的方法能提升性能,實(shí)際開發(fā)中優(yōu)先根據(jù) “返回值類型” 選擇對(duì)應(yīng)方法。

以上就是JavaScript數(shù)組遍歷的七種方法詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript數(shù)組遍歷方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用JavaScript實(shí)現(xiàn)圖片的自動(dòng)輪播

    使用JavaScript實(shí)現(xiàn)圖片的自動(dòng)輪播

    在網(wǎng)站開發(fā)中,經(jīng)常會(huì)遇到需要展示多張圖片并自動(dòng)切換的需求,這就需要使用JavaScript來(lái)實(shí)現(xiàn)圖片的自動(dòng)輪播功能,本文將通過一個(gè)簡(jiǎn)單的例子,演示如何用JavaScript實(shí)現(xiàn)圖片的自動(dòng)輪播,感興趣的同學(xué)可以自己動(dòng)手試一試
    2023-09-09
  • js加解密 腳本解密

    js加解密 腳本解密

    利用js異或算法實(shí)現(xiàn)腳本加解密的代碼
    2008-02-02
  • 微信小程序開發(fā)之好友列表字母列表跳轉(zhuǎn)對(duì)應(yīng)位置

    微信小程序開發(fā)之好友列表字母列表跳轉(zhuǎn)對(duì)應(yīng)位置

    這篇文章主要介紹了微信小程序開發(fā)之好友列表字母列表跳轉(zhuǎn)對(duì)應(yīng)位置的相關(guān)資料,希望通過本文能幫助到大家讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • JS事件綁定的常用方式實(shí)例總結(jié)

    JS事件綁定的常用方式實(shí)例總結(jié)

    這篇文章主要介紹了JS事件綁定的常用方式,結(jié)合實(shí)例形式總結(jié)分析了javascript三種常見的事件綁定原理與操作技巧,需要的朋友可以參考下
    2019-03-03
  • 使用JS實(shí)現(xiàn)一個(gè)高精準(zhǔn)定時(shí)器和延時(shí)器

    使用JS實(shí)現(xiàn)一個(gè)高精準(zhǔn)定時(shí)器和延時(shí)器

    文章介紹了瀏覽器定時(shí)器不精準(zhǔn)的原因,以及如何通過時(shí)間戳校正、遞歸setTimeout、requestAnimationFrame和WebWorker等方法實(shí)現(xiàn)高精準(zhǔn)定時(shí)器,最后總結(jié)了不同定時(shí)器的適用場(chǎng)景,并給出了面試標(biāo)準(zhǔn)回答,需要的朋友可以參考下
    2026-01-01
  • JavaScript框架是什么?怎樣才能叫做框架?

    JavaScript框架是什么?怎樣才能叫做框架?

    這篇文章主要介紹了JavaScript框架是什么?怎樣才能叫做框架?,本文講解了什么是 JavaScript 框架、JavaScript 框架的典型特性等內(nèi)容,需要的朋友可以參考下
    2015-07-07
  • js中如何獲取JSON數(shù)組的長(zhǎng)度

    js中如何獲取JSON數(shù)組的長(zhǎng)度

    這篇文章主要介紹了js中如何獲取JSON數(shù)組的長(zhǎng)度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • DPlayer.js視頻播放插件使用方法

    DPlayer.js視頻播放插件使用方法

    這篇文章主要為大家詳細(xì)介紹了JSx實(shí)現(xiàn)簡(jiǎn)單控制視頻播放倍速,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • select、radio表單回顯功能實(shí)現(xiàn)避免使用jquery載入賦值

    select、radio表單回顯功能實(shí)現(xiàn)避免使用jquery載入賦值

    select、radio表單回顯避免使用jquery載入賦值,最好的做法是:在jsp頁(yè)面進(jìn)行邏輯判斷,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助
    2013-06-06
  • 使用uni-app開發(fā)微信小程序的實(shí)現(xiàn)

    使用uni-app開發(fā)微信小程序的實(shí)現(xiàn)

    這篇文章主要介紹了使用uni-app開發(fā)微信小程序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

米脂县| 清远市| 司法| 富平县| 手机| 泗水县| 北宁市| 洛阳市| 仁怀市| 海安县| 宝山区| 广宗县| 故城县| 江源县| 乌兰浩特市| 朝阳县| 新巴尔虎右旗| 澄迈县| 广州市| 威信县| 沙田区| 和静县| 肃宁县| 湘西| 台中县| 鲁甸县| 南通市| 习水县| 徐州市| 博罗县| 无锡市| 佛山市| 无极县| 雷州市| 塘沽区| 琼海市| 高碑店市| 宜宾市| 新巴尔虎右旗| 赫章县| 介休市|