forEach 메서드는 자바스크립트 자체에서 for문을 함수로 정의를 해 준 아주 고맙고 편리한 메소드다. 주어진 함수를 배열의 요소 각각에 대해 오름차순으로 실행해 준다.
filter 함수와 마찬가지로, 주어진 함수를 사용해야 하므로 콜백 함수를 사용한다. 또, 콜백 함수의 쓰임에 따라서 이 메서드를 쓰는 방식이 살짝씩 달라진다.
구문은 이렇다.
callback - 주어진 함수
currentValue - 처리할 현재 요소
index - 처리할 현재 요소의 인덱스
array - forEach 메서드를 호출한 배열
thisArg - callback을 실행할 때 this의 값
보통 curValue만 쓴다.
값은 undefined로 나온다. (for구문이라고 생각하면 쉽다.)
IMMUTABE 메서드이지만, callback 함수가 바꿀 수도 있다.
let arr = [1, 2, 3, 4];
let copy = [];
for(i=0;i<arr.length;i++) { copy.push(arr[i]); }
↓
arr.forEach(function (item) { copy.push(item); }
//item이 arr[i]가 되는 것.
every와 some 메소드는 주어진 함수를 통과하는지 하지 않는지를 불리언 값으로 나타낸다.
every() 메소드는 배열의 요소 모두가 주어진 함수의 테스트를 통과해야 true를 반환하고, 요소 중 하나라도 통과하지 않는다면 그 즉시 false를 반환한다.
some() 메소드는 배열의 요소 중 하나라도 테스트를 통과한다면 그 즉시 true를 반환한다. 전부 통과하지 않을 시에만 false를 반환한다.
구문은 비슷하다.
arr. every(callback(currentValue[,index[,array]])[,thisArg])
arr.some(callback(currentValue[,index[,array]])[,thisArg])
arr = [1, 2, 20];
arr.every(x => x>10); //false
arr.some(x => x<10); //true