[Javascript] array methods forEach() , map() , replace()

2022. 9. 24. 21:48CodingTest/JavaScript Q

문제)

1. moreThan100 함수를 구현해 주세요.

  • 숫자로 구성된 배열을 인자로 받습니다.
  • 100 보다 크거나 같으면, true 
  • 100 보다 작으면 false 로 요소를 변경하여, 새로운 배열을 return 해주세요.
  • 예를 들어,
  •  
nums(input)가
[100, 9, 30, 7]
이라면
return은
[true, false, false, false]

2. formatDate 함수를 구현해 주세요.

  • 날짜가 담긴 배열을 인자로 받습니다.
  • 날짜의 data type은 string이며, 보내는 날짜 타입은 'YYYY-MM-DD' 입니다.
  • 해당 날짜의 형식을 'YYYY년 MM월 DD일' 로 바꿔서, 새로운 배열을 return 해주세요.
  • 예를 들어
  •  
dates(input)가
['2019-03-21', '2019-04-21', '2019-05-21']
이라면
return은
['2019년 03월 21일', '2019년 04월 21일', '2019년 05월 21일']

Array method
Array.map()
  • 메서드는 배열을 반복해주는데 callback 함수에서 return한 값으로 매(each) 요소를 수정해 줍니다.
  • map 메서드의 return 값은 수정된 값으로 다시 생성된 배열입니다.
  • Array 타입의 데이터를 요소 갯수 만큼 반복합니다.
  • 반복할 때마다 실행할 함수를 parameter로 전달합니다.
const array = [1, 2, 4, 5]
const arrMap = array.map(x => x * 2)         
console.log(arrMap)       
// [2, 4, 8, 10]
Array.forEach()
  • forEach 는 배열의 모든 요소를 순회하면서 요소 각각에 대해 콜백 함수에 인자로 전달하여 반복 호출하는 배열 메서드입니다.
  • map 과의 큰 차이는 새로운 배열을 return(반환) 하지 않는다는 점입니다.
  • forEach는 배열의 모든 요소를 순회하기 때문에 콜백 함수를 실행하는 중간에 반복을 탈출할 수 없으며새로운 배열 또한 반환하지 않습니다.
Array.replace()
  • 기존에 문자열은 변경되지 않고 변경된 새로운 문자열을 반환
const str = "Hello world"
str.replace("world" , "Lee")
// Hello Lee

map() , push()
const moreThan100 = nums => {
	let arr = []; 
	nums.map(x => { 
		if(x >= 100){
          arr.push(true); 
        } else { 
          arr.push(false);  
	}});
	return arr; 
}
console.log(moreThan100([100, 9, 30, 7]))
//[ true, false, false, false ]
slice() , push()
const formatDate = dates => {
  const str = [];
  dates.map(x => {
    str.push(x.slice(0, 4) + "년 " + x.slice(5, 7) + "월 " + x.slice(8) + "일");
 })
  return str;
}
console.log(formatDate(['2019-03-21', '2019-04-21', '2019-05-21']))
//[ '2019년 03월 21일', '2019년 04월 21일', '2019년 05월 21일' ]
replace()
const formatDate = dates => {
  return dates.map(x => x.replace('-','년 ').replace('-', '월 ') + '일');
}