Javascript Cookbook

각 배열 원소에 함수 적용하기

문제

함수를 사용해서 배열 원소의 값을 확인하고, 주어진 조건에 맞는 원소로 바꾸고 싶다.

해결

Array 객체의 forEach를 사용하면 각 배열 원소에 콜백 함수를 추가할 수 있다.

var charSets = new Array("ab", "bb", "cd", "ab", "cc", "ab", "dd", "ab");

function replaceElement(element,index,array){
    if(element == "ab") array[index] = "**";
}

//각 배열 원소에 함수 적용
charSets.forEach(replaceElement);
document.write(charSets);   //**,bb,cd,**,cc,**,dd,** 출력

설명

forEach 메서드에는 인수로 함수를 전달한다. 함수에는 세 개의 인수가 있는데, 배열 원소, 배열 원소의 인덱스, 그리고 배열이다.

원소의 값을 확인하고 같다면 인덱스를 사용해서 원소의 값을 문자열로 바꾼다.

forEach 메서드에 전달하는 함수에서 값을 반환하면 안된다. 반환되는 값은 무시된다.

대부분의 브라우저와 IE9부터는 forEach를 지원하지만 IE8은 지원하지 않는다.

forEach를 지원하지 않는 웹브라우저를 위해 Array.prototype 속성을 사용하여 흉내낼 수 있다. 아래 링크에서 확인할 수 있다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach