현재 리액트강의 무사히 수강후 프로젝트에 적용 마친후
다음 프로젝트에서 타입스크립트를 사용해보고 싶어 공부중인 교육생입니다.
숙제 1관해서 질문하려다가 자바스크립트 map함수특성을 알게되어서 제가 생각한것이 맞는지 물어보고 싶어요
```
var changed = function (nums) {
return nums.map(function (num) {
if (typeof num === "string") {
var a = Number(num);
return Number(num);
} else {
return num;
}
});
};
console.log(changed([123, "3", "5", 12]));
```
원래 이렇게 하기전에
```
const change = (nums : (string | number)[]) => {
nums.map((num)=> {
if(typeof(num) === string) {
return Number(num)
} else {
return num
}
})
return nums
```
이렇게 했었는데 클리닝이 되지않은 상태가 콘솔에 찍히더라고요
검색해보니깐 map 메서드 사용시 기존배열의 변화 없이 새로운 배열에 만들어준다는거같은데
그래서 위의 코드는 새로운 배열을 바로 return 시켜줘서 콘솔로그에 클리닝 된 값이 찍히는거구
아래 코드는 기존배열에 map을 돌리기만 했지 따로 반환된 배열을 저장안해줘서
아래에 return시 클리닝 전의 배열이 출력되는것이 맞나요?
```
const changed = (nums: (string | number)[]) => {
const newNums: number[] = nums.map((num) => {
if (typeof num === "string") {
let a: number = Number(num);
return Number(num);
} else {
return num;
}
});
return newNums;
};
```
요렇게 하니깐 클리닝된 배열이 나오던데 제 생각이 맞는지 물어보고 싶습니다.