반복문으로 배열을 순회하였을 때, 가장 큰 수를 리턴해야하는 문제였는데, maxNum을 0으로 할당해줬는데 5개 테스트중 하나인 음수케이스가 통과되지 않아서 math.abs() 를 사용하려고 했다가 알고보니 arr[0]을 maxNum에 할당해주면 해결되는 문제 였다.
function getLongestWord(str) {
let arr = str.split(' ');
let longWord = arr[0];
for(let word of arr){
if(word.length > longWord.length){
longWord = word;
}
}
return longWord;
}
// 주의할 점 for of 문 안에서 변수를 선언하면 적용이 안되는 것 같다.
// for(let i = 0; i < arr.length; i++){
// if(arr[i].length > longWord.length){
// longWord = arr[i];
// }
// }
// return longWord;
두 개의 배열을 입력 받아 순서대로 합쳐진 배열을 리턴해야한다.
[arr, ...arr2] 이 아니면 뭐가 맞는 문법일까 spread
<> arr1.concat(arr2);
입력받은 배열을 수정하지 않으려면 기존 배열을 slice(0)으로 복사를 해오고 이 값을 할당해준 새로운 배열에 push를 해줬는데, slice()만해도 되는 것 같다.
그리고 let 말고 const로 해줬는데 재할당이 안되지않나..?
배열과 인덱스를 입력 받아 해당 인덱스의 요소를 제외한 배열을 리턴해야한다.
for(let i = 0; i < arr.length; i++) 로 반복문의 조건을 줬는데
i가 0번째부터 시작하니까 n(인덱스) 와 같지않으면 arr[i]로 접근해서 값을 최종 값을 리턴할 빈 배열에 더해주면 알아서 필터링 되는 문제 였던것 같다.
if(leng === 11){
head = `(${arr.slice(0, 3).join('')})`;
}
head를 재할당 해주는 과정에서 왜
`(${arr.slice(0,3).join('')})`
이렇게 해주는 건지 좀 이해가 안간다.
head = (arr.slice(0, 3).join(''));
이렇게하면 console.log값이 '0709876-3214' 이렇게 나온다. ()로 감싸주기 위해서 templete literal을 쓴 것 같다.
for(let i = 0; i <= num ; i++){
if(i === 0){
newArr.push(0);
}else if (i === 1){
newArr.push(1);
}else{
newArr.push(newArr[i - 2]+ newArr[i -1]);
}
}
return newArr;
왜 반복문의 조건이 배열의 길이가 아닌데, newArr[i - 2] 이렇게 접근이 가능한건지 이해가 안 간다. 내용은 이해가간다. 먼저 0번째 인덱스, 1번째 인덱스 값을 넣어준 상황이라서 0, 1 이 들어가고 2가 들어가면 else로 빠져서 i(2) - 2 = 0
=> newarr[0] + newArr[1]이 되어서 1이 다음 인덱스값으로 할당이 되는 것 같다.