sumOfArraysInArray
문제
2차원 배열(배열을 요소로 갖는 배열)을 입력받아 모든 수(number)의 합을 리턴해야 합니다.
입력
인자 1 : arr
- 배열을 요소로 갖는 배열
- arr[i]는 임의의 타입을 요소로 갖는 배열
출력
- number 타입을 리턴해야 합니다.
주의 사항
- 합을 구할 때 number 타입만 고려해야 합니다.
입출력 예시
let output = sumOfArraysInArray([ [1, 2], [undefined, 4, '5'], [9, 'hello'], ]); console.log(output); // --> 16
풀이
1. 1차원 배열을 요소로 갖는 2차원 배열이라는 것을 인지. 1차원 배열의 요소를 한 곳에 몰아넣는 작업을 하면 요소만 추출
2. 한 곳에 몰아 넣고 'number'인 부분만 filter해서 배열 추출
3. 마지막 그 요소들을 더하면 끝!!
코드
const joinedArr = arr.reduce(function (acc, cur) {
return acc.concat(cur);
});
const onlyNumbers = joinedArr.filter(function (el) {
return typeof el === 'number';
});
return onlyNumbers.reduce(function (acc, cur) {
return acc + cur;
}, 0);
내가 쓴 코드
1. 이중 배열의 요소인 배열로 map을 통해 접근
2. 배열인 요소를 반복했을 때 요소의 타입이 넘버이면 새로운 변수에 그 데이터를 저장
3. 맵을 리턴하면 정리된 새로운 배열 추출
4. 그 배열을 reduce로 정리하면 끝!!
let newarray=arr.map(array=>{
let sum=0
//만약에 타입이 숫자면 더한다.
for(let i=0; i<array.length;i++){
if( typeof array[i] === 'number'){
sum= sum+array[i]
}
}
return sum
})
return newarray.reduce((acc,cur)=>{
return acc+cur
},0)
'나를 성장시키는 알고리즘' 카테고리의 다른 글
다차원 배열을 계속 접근하여 새로운 배열을 추출 (0) | 2021.10.14 |
---|---|
데이터 타입이 배열인 변수의 문자열 만들기(JSON 연습) (0) | 2021.10.08 |
배열을 객체로 전환하기 (0) | 2021.09.29 |
객체를 중첩배열로 리턴하는 함수 (0) | 2021.09.28 |
빈 배열에 새로운 배열의 요소들을 순서대로 넣고싶을 때 (0) | 2021.09.27 |