이 기사는 javascript에 대한 관련 지식을 제공합니다. JavaScript에서 일반적으로 사용되는 7가지 배열 반복 처리 방법에 대해 함께 살펴보겠습니다.
【관련 권장사항: javascript video tutorial, web front-end】
1.1 적용 시나리오: 특정 규칙을 사용하여 새 배열을 매핑합니다( , 각 요소에 대해 해당 처리를 수행하고 새 배열을 반환합니다.)
예: 배열의 각 요소에 +1
let arr = [10, 20, 30, 40, 50] //item数组每一项的值,index数组的下标 let newArr = arr.map((item, index) => { return item + 1 }) console.log(newArr)//[11, 21, 31, 41, 51]
1.2 참고:
(1) 콜백 함수의 실행 횟수는 동일합니다. 배열 길이
(2)에 map 함수가 반환한 새 배열의 길이는 원래 배열의 길이
(3)과 같습니다. 반환되는 값은 다음과 같습니다. 반환되지 않으면 새 배열의 각 요소는 모두 정의되지 않습니다
2.1 응용 시나리오: for 루프를 작성하는 또 다른 방법과 동일합니다.
2.2 참고:(1) 콜백 함수의 실행 횟수는 배열 길이(2)와 같습니다. forEach 함수에는 반환 값이 없습니다(3). , 수동으로 반환하더라도 루프는 끝나지 않습니다3.filter() 메서드3.1 응용 시나리오: 사용 조건에 맞는 배열의 요소를 필터링하고 필터링된 새 배열을 반환합니다예: 찾기 배열의 짝수let arr = [10, 20, 30, 40, 50] arr.forEach((item, index) => { console.log(`下标为${index}的元素是${item}`) }) //控制台打印结果 //下标为0的元素是10 //下标为1的元素是20 //下标为2的元素是30 //下标为3的元素是40 //下标为4的元素是503.2 참고:(1) 콜백 함수의 실행 횟수는 배열의 길이와 같습니다(2) 필터 함수에서 반환된 새 배열의 길이 콜백 함수는 부울 값을 반환해야 합니다. 반환 값이 true이면 현재 순회하는 요소가 반환 값인 경우 새 배열에 추가됩니다. 값이 false이면 새 배열에 추가되지 않습니다4.some() 메서드4.1 응용 시나리오: 배열의 조건을 충족하는 요소가 있는지 확인하는 데 사용됩니다예: 있는지 확인 배열에 100보다 큰 숫자(있음, 반환 값이 true, 존재하지 않음, 반환 값이 false)
let arr = [1, 2, 3, 4, 5, 6, 7, 8] let newArr = arr.filter((item, index) => { //return一个布尔值 return item % 2 == 0 }) console.log(newArr)//[2,4,6,8]4.2 참고:(1) 콜백 함수의 실행 횟수가 동일하지 않습니다. 배열 길이(2)에 대한 반환 값은 부울 값(3)입니다. 콜백 함수는 순회를 종료하기 위해 부울 유형 값을 반환합니다. , 일부 함수의 반환 값은 false입니다. 반환 값이 false이면 순회가 계속되고 일부 함수의 반환 값은 false5.every() 메서드5.1 적용 시나리오: 사용됩니다. 배열의 모든 요소가 조건을 충족하는지(아이디어 전환), some() 메서드와 유사한 기능을 갖고, 비교하고 이해할 수 있는지 확인합니다. 예: 배열의 모든 요소가 100보다 큰지 확인합니다(모두 100입니다) 100보다 크면 반환 값은 true이고, 한 요소가 100보다 작으면 반환 값은 false입니다.)
let arr = [10, 50, 150, 200, 60, 30] let bol = arr.some((item, index) => { return item > 100 }) console.log(bol)//true5.2 참고: (1).Callback 함수 실행 횟수는 다음과 같지 않습니다. 배열 길이(2). 모든 함수의 반환 값은 부울 값(3)입니다. 콜백 함수는 순회를 종료하기 위해 부울 유형 값을 반환합니다. 모든 함수의 반환 값은 true입니다. 반환 값이 false이면 계속 종료되며 모든 함수의 반환 값은 false입니다.6.findIndex() 메서드6.1 응용 시나리오: 요소가 유형인 배열, 기존 for 루프보다 효율적입니다6.2 기능: 조건을 충족하는 첫 번째 요소의 위치(하첨자)를 가져옵니다
let arr = [10, 50, 150, 200, 60, 30] let bol = arr.every((item, index) => { return item > 100 }) console.log(bol)//false6.2 참고:(1)의 값. true이면 순회가 종료되고 findIndex 메소드의 반환 값은 현재 인덱스 값입니다. 반환 값이 false이면 순회는 모든 배열 순회 후에도 true가 반환되지 않으면 findIndex 메소드의 반환 값은 다음과 같습니다. -17.reduce() 메소드 7.1 응용 시나리오: 배열 합계/평균/최대/최소값7.2 기능: 배열 요소를 순회하고 각 요소에 대해 콜백 함수를 실행
let arr = [ { name: '张三', age: 20 }, { name: '李四', age: 30 }, { name: '王五', age: 25 }, { name: '赵六', age: 33 }, { name: '小七', age: 10 }, ]; let i=arr.findIndex((item,index)=>{ return item.age>30 }) //打印的i为符合条件的第一个元素下标 console.log(i)//37.2 참고: (1) 빈 배열 오류를 방지하려면 초기 값을 제공하는 것이 가장 좋습니다
//数组求和 let arr = [10, 20, 30, 40] //sum:初始值,默认为数组的第一个元素 //item:数组的每一个元素,默认为数组的第二个元素 let getSum = arr.reduce((sum, item) => { //这里必须要return,相当于把本次计算得结果赋值给下一次得sum : sum = sum + item; return sum + item }) console.log(getSum)//100여기서 특히 주의할 점은 각 라운드의 합계 값이 이전 라운드의 반환 값이라는 것입니다8. 요약
확장됩니다. 예:
arr.参数 | 详情 |
---|---|
sum第一个参数 | 第一次为数组的第一个数组元素的值(下标为0),依次往后是返回计算结果的值 |
value 第二个参数 | 开始为数组元素第二个的值(下标为1),依次往后循环 |
index第三个参数 | 依次为数组元素的下标 |
arr第四个参数 | 为数组的整体 |
initialValue | 为第一参数的默认值,设置的话,第一个参数的默认值为initialValue的值,则 第二个参数则将使用数组第一个元素(下标为0 ),没有设置的话,第一个参数将使用数组第一个元素,而 第二个参数 将使用数组第二个元素。 |
function sum(arr){ return arr.reduce(function(sum,value,index,arr){ console.log(sum); console.log(value); console.log(index); console.log("~~") console.log(arr) return sum+y },initialValue)}console.log(sum([1,2,3,4,5]))
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。 every() 方法使用指定函数检测数组中的所有元素: 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。 如果所有元素都满足条件,则返回 true。 注意: every() 不会对空数组进行检测。 注意: every() 不会改变原始数组。
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.every(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。 some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果没有满足条件的元素,则返回false。 注意: some() 不会对空数组进行检测。 注意: some() 不会改变原始数组。
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.some(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
filter()方法过滤查找全部,对数组元素进行判断,满足条件的会组成一个新的数组返回 注意:如果都不符合条件,会得到一个空数组 注意:如果所有元素都符合条件,会得到一个包含所有元素的新数组它与原数组进行===或==比较会得到false
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.filter(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=5 })}console.log(sum([1,2,3,4,5]))
map对数组元素进行循环,有返回值,返回值会组成一个新的数组 注意:map可以处理一对一的元素映射
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
const source = [1,2,3,4]const target = source.map(n=>({id:n,label:`label${n}`}))console.log(target)
function sum(arr){ return arr.map(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
forEach()方法对数组元素进行循环,没有返回值和for循环的功能一样,但是不能使用break和countinue 注意:map和forEach的区别:map有返回值,forEach没有返回值
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.forEach(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
【相关推荐:javascript视频教程、web前端】
위 내용은 JavaScript 배열에 일반적으로 사용되는 7가지 반복 처리 방법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!