나는 생각 없이 데이터를 가져와 화면에 표출할 때 each 함수를 자주 사용했다. for문은 가독성이 떨어져서 each문으로 간단하게 나타내는 게 보기 좋았기 때문이다. 어김없이 each문을 이용하고 있었는데, 상사분께서 혹시 for, each 등의 성능 차이에 대해 아냐며 검색해 보라는 말씀을 해주셨다.
실제로 반복문은 each 외에도 for, foreach, filter, map, reduce 등 다양한 메서드 혹은 구문을 이용해 구현할 수 있다. 사실 이들의 퍼포먼스 차이에 대해 찾아본 적이 없었다. 데이터를 표출하기 위해서 급급했달까... 😂 생각해보니 반복문을 표현하는 다양한 방법들이 있는데, 이들의 존재 이유는 각 상황마다 사용 사례가 조금씩은 다르지 않을까 싶었다. 그래서 자세히 찾아보기로 결심했다.
for (int i = 0; i < 10; i++) {
console.log(arr[i]);
};
arr.forEach(function(v, i, arr) {
console.log(v);
});
for (var i = 0; i <arr.length; i++) {
console.log('element', i, arr[i]);
console.log(arr[i].property1 + arr[i].property2);
console.log(arr[i].property2);
};
arr.forEach (function (v, i) {
console.log('element', i, v);
console.log(v.property1 + v.property2);
console.log(v.property2);
});
var arr = [1,2,3,4,5];
var newArr = arr.forEach(function(e, i) {
return e;
});
// undefined
var newArr = arr.filter(function(v, i, arr) {
return condition;
});
var arr = [0, , , 1, , , , , 2, , , , 3];
var newArr = arr.filter(function() { return true; });
var newArr = arr.filter(function(el) { return el; });
// 0, 1, 2, 3
var newArr = arr.map(function(v, i, arr) {
return condition;
});
var arr = [1, 2, 3, 4, 5];
var newArr = arr.map(function(v, i, arr) {
return v + 1;
});
// 2, 3, 4, 5, 6
var arr = [1, 2, 3, 4, 5];
var newArr = arr.reduce(function(acc, v, i, arr) {
return acc + v;
});
// 15
var arr = [1,2,3,4,5]
var newArr = arr.reduce(function(acc, v, i, arr) {
return acc + v;
}, 100);
// 115