프로그래밍/javacscript

[220109] 1차 배열, 2차 배열의 합을 forEach, reduce, join으로 해결하기

한코코 2022. 1. 9. 17:20

목차

1.   1차배열의 합

2.   2차배열의 합


주기적으로 배열을 다뤄서 요소들의 합을 내놓으라는 문제를 접하는데, 계속 찾아보고 걔념 잡기 귀찮아서 한번에 정리.

1차 배열의 합 : reduce

function a(arr){
	return arr.reduce((v,i)=>v+i)
}

console.log(a([1,2,3,4,5]))

 

 

1차 배열의 합 : forEach

function a(arr){
	arr.forEach(v=>sum+=v);
	return sum;
}

console.log(a([1,2,3,4,5]))

 

 

1차 배열의 합 : map

function a(arr){
	arr.map(v=>sum+=v);
	return sum;
}

console.log(a([1,2,3,4,5]))

 

forEach랑 map의 차이점

  • return 값을 버리고 자료형이 없는 값을 전달하는가
  • return 값을 저장해서 만든 새 배열로 값을 전달하는가.

 

 

forEach와 map과 reduece는 다음 게시글에 자세히 정리해놓았다 : https://hancoco.tistory.com/39

 

[220108] Array, fill, 덧셈 삼대장(map, reduce, forEach)

Array ( 집어넣을 요소 | 생성할 빈 배열 수) Array( element1, element2... | arrayLength ) : 생성자 새로운 array 객체를 생성할때 사용 element1, element2... : array / 안에 채울 요소, 만약 자료형이 숫자..

hancoco.tistory.com

 


 

2차 배열의 합 : reduce -> 공식은 외웠는데 뭔가 이상하게 알고 있음

const arr = [1, [2, 3], 4, [5, 6, 7]];

	const arr_concat = arr.reduce((stack, el)=>{
    	// 이전 요소의 누적된 배열과 현재 요소를 하나의 배열로 합함.
    	return stack.concat(el);
        
        //stack이 누적될 변수, el이 앞으로 누적할 현재값, {}바깥에 있는 []이 누적변수의 초기값
        /*
        	concat(el)에는 1,[2,3],4,[5,6,7]이 오는거 아닌가?
        	그래야 현재요소랑 인덱스 값이 1:1로 연결되는거 아닌가? 그거때문에 인덱스 값을 안 준건가?
            2중배열 안에 있더라도 무조건 안의 요소를 1개 취급하는건가?
        */
        
        
    }, []);

console.log(arr_concat);

 

2차 배열의 합 : join과 split

let arr=[1,[2,3],4,[5,6,7]]
console.log(arr.join().split(','));