網(wǎng)站首頁 編程語言 正文
數(shù)組的遍歷方法有哪些
- 一、forEach()
- 二、map()
- 三、filter()
- 四、every()
- 五、some()
- 六、find()
- 七、findIndex()
- 八、reduce()
- 九、reduceRight()
一、forEach()
不改變?cè)瓟?shù)組,沒有返回值,會(huì)返回新數(shù)組
功能:用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù)。
數(shù)組中的每個(gè)值都會(huì)調(diào)用回調(diào)函數(shù),回調(diào)函數(shù)有三個(gè)參數(shù):
-
currentValue: 必需。當(dāng)前元素
-
index: 可選。當(dāng)前元素的索引值。
-
arr: 可選。當(dāng)前元素所屬的數(shù)組對(duì)象
let arr = [1,2,3,4,5]
arr.forEach((item, index, arr) => {
console.log(index+":"+item)
})
該方法還可以有第二個(gè)參數(shù),用來綁定回調(diào)函數(shù)內(nèi)部this變量(前提是回調(diào)函數(shù)不能是箭頭函數(shù),因?yàn)榧^函數(shù)沒有this):
let arr = [1,2,3,4,5]
let arr1 = [9,8,7,6,5]
arr.forEach(function(item, index, arr){
console.log(this[index]) // 9 8 7 6 5
}, arr1)
需要注意的是,forEach方法對(duì)數(shù)組的操作會(huì)改變?cè)瓟?shù)組,也沒有返回值。
二、map()
不改變?cè)瓟?shù)組,有返回值,會(huì)返回新數(shù)組
map() 方法會(huì)返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。該方法按照原始數(shù)組元素順序依次處理元素。
注意: map() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè),它會(huì)返回一個(gè)新數(shù)組,不會(huì)改變?cè)紨?shù)組。
該方法的第一個(gè)參數(shù)為回調(diào)函數(shù),他有三個(gè)參數(shù):
currentValue: 必須。當(dāng)前元素的值
index :可選。當(dāng)前元素的索引值
arr :可選。當(dāng)前元素屬于的數(shù)組對(duì)象
let arr = [1, 2, 3];
arr.map(item => { return item+1;})// 返回值: [2, 3, 4]
第二個(gè)參數(shù)用來綁定參數(shù)函數(shù)內(nèi)部的this變量,可選:
var arr = ['a', 'b', 'c'];//下面使用箭頭函數(shù)會(huì)出錯(cuò)
[1, 2].map(function (e) {
return this[e];}, arr)// 返回值: ['b', 'c']
該方法可以進(jìn)行鏈?zhǔn)秸{(diào)用:
let arr = [1, 2, 3];
arr.map(item => item+1).map(item => item+1)// 返回值: [3, 4, 5]
三、filter()
有返回值,滿足條件的元素會(huì)被返回,不改變?cè)瓟?shù)組
filter()方法用于過濾數(shù)組,滿足條件的元素會(huì)被返回。它的參數(shù)是一個(gè)回調(diào)函數(shù),所有數(shù)組元素依次執(zhí)行該函數(shù),返回結(jié)果為true的元素會(huì)被返回。該方法會(huì)返回一個(gè)新的數(shù)組,不會(huì)改變?cè)瓟?shù)組。
該方法的第一個(gè)參數(shù)是回調(diào)函數(shù),它有三個(gè)參數(shù):
currentValue: 必須。當(dāng)前元素的值
index :可選。當(dāng)前元素的索引值
arr :可選。當(dāng)前元素屬于的數(shù)組對(duì)象
let arr = [1, 2, 3, 4, 5]
//格式中加括號(hào),同時(shí)加return也行
arr.filter(item => item > 2)
// 結(jié)果:[3, 4, 5]
同樣,他也有第二個(gè)參數(shù),用來綁定參數(shù)函數(shù)內(nèi)部的this變量。
第三、ECMAScirpt5 中 Array 類中的 filter 方法使用目的是移除所有的 ”false“ 類型元素 (false, null, undefined, 0, NaN or an empty string):
var a=[1,2,"b",0,{},"",NaN,3,undefined,null,5];
//Boolean是一個(gè)回調(diào)函數(shù)
var b=a.filter(Boolean); // [1,2,"b",{},3,5]
四、every()
有返回值,不改變?cè)瓟?shù)組
功能:如果每個(gè)元素都符合條件返回true,否則返回false
同filter(),也有三個(gè)參數(shù),item,index,數(shù)組名
let arr = [1, 2, 3, 4, 5]
arr.every(item => item > 0)
// 結(jié)果: true
五、some()
有返回值,不改變?cè)瓟?shù)組
功能:如果有一個(gè)元素符合條件 ,返回true
同filter(),也有三個(gè)參數(shù),item,index,數(shù)組名
let arr = [1, 2, 3, 4, 5]
arr.some(item => item > 4)
// 結(jié)果: true
六、find()
有返回值,不改變?cè)瓟?shù)組
功能:返回符合條件的第一個(gè)元素
- 當(dāng)數(shù)組中的元素在測(cè)試條件時(shí)返回 true 時(shí), find() 返回符合條件的元素,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù)。
- 如果沒有符合條件的元素返回 undefined
注意: find() 對(duì)于空數(shù)組,函數(shù)是不會(huì)執(zhí)行的。
該方法的第一個(gè)參數(shù)也是一個(gè)函數(shù),它有三個(gè)參數(shù):
- currentValue :必需。當(dāng)前元素
- index :可選。當(dāng)前元素的索引
- arr :可選。當(dāng)前元素所屬的數(shù)組對(duì)象
let arr = [1, 2, 3, 4, 5]
arr.find(item => item > 2)
// 結(jié)果: 3
七、findIndex()
功能:返回第一個(gè)符合條件的元素下標(biāo)
- 當(dāng)數(shù)組中的元素在函數(shù)條件時(shí)返回 true 時(shí), findIndex() 返回符合條件的元素的索引位置,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù)。
- 如果沒有符合條件的元素返回 -1
注意: findIndex() 對(duì)于空數(shù)組,函數(shù)是不會(huì)執(zhí)行的。
該方法的第一個(gè)參數(shù)也是一個(gè)函數(shù),它有三個(gè)參數(shù):
- currentValue :必需。當(dāng)前元素
- index :可選。當(dāng)前元素的索引
- arr :可選。當(dāng)前元素所屬的數(shù)組對(duì)象
let arr = [1, 2, 3, 4, 5]
arr.findIndex(item => item > 2)
// 結(jié)果: 2
八、reduce()
加初始值,可改變?cè)瓟?shù)組,有返回值,返回值是數(shù)組的和
功能:按數(shù)組下標(biāo)升序?qū)?shù)組元素求和
語法: arr.reduce(callback,[initialValue])
reduce 為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù):初始值(或者上一次回調(diào)函數(shù)的返回值),當(dāng)前元素值,當(dāng)前索引,調(diào)用 reduce 的數(shù)組。
(1) callback (執(zhí)行數(shù)組中每個(gè)值的函數(shù),包含四個(gè)參數(shù))
-
previousValue (上一次調(diào)用回調(diào)返回的值,或者是提供的初始值(initialValue))
-
currentValue (數(shù)組中當(dāng)前被處理的元素)
-
index (當(dāng)前元素在數(shù)組中的索引)
-
array (調(diào)用 reduce 的數(shù)組)
(2) initialValue (作為第一次調(diào)用 callback 的第一個(gè)參數(shù)。)
var arr = [1, 2, 3, 4]
var sum = arr.reduce((prev, cur, index, arr) => {
console.log(prev, cur, index);
return prev + cur;
})
console.log(arr, sum);
輸出結(jié)果:
再來加一個(gè)初始值看看:
var arr = [1, 2, 3, 4]
var sum = arr.reduce((prev, cur, index, arr) => {
console.log(prev, cur, index);
return prev + cur;
}, 5)
console.log(arr, sum);
輸出結(jié)果:
通過上面的兩個(gè)例子,我們可以得出結(jié)論:如果沒有提供initialValue,reduce 會(huì)從索引1的地方開始執(zhí)行 callback 方法,跳過第一個(gè)索引。如果提供initialValue,從索引0開始
注意,該方法如果添加初始值,就會(huì)改變?cè)瓟?shù)組,將這個(gè)初始值放在數(shù)組的最后一位。
九、reduceRight()
功能:對(duì)數(shù)組逆序(按數(shù)組下標(biāo))求和
其它同reduce()
var arr = [1, 2, 3, 4]
var sum = arr.reduceRight((prev, cur, index, arr) => {
console.log(prev, cur, index);
return prev + cur;
}, 5)
console.log(arr, sum);
執(zhí)行結(jié)果:
原文鏈接:https://blog.csdn.net/qiuyushuofeng/article/details/125580800
相關(guān)推薦
- 2022-09-26 符合選擇器和css三大特性組合
- 2022-07-23 SQL?Server中T-SQL標(biāo)識(shí)符介紹與無排序生成序號(hào)的方法_MsSql
- 2022-06-08 Tomcat部署iframe出現(xiàn)Refused to display ‘url‘ in a fram
- 2024-04-07 linux系統(tǒng)中防火墻(firewall)的操作(開啟端口,查看端口)
- 2022-08-12 Python學(xué)習(xí)之字典的創(chuàng)建和使用_python
- 2023-07-05 React解決setState異步帶來的多次修改合一和修改后立即使用沒有變化問題
- 2022-03-15 GO + React + Axios Response to preflight request
- 2022-04-09 SpringBoot自定義validation注解校驗(yàn)參數(shù)只能為指定的值
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支