function biggestNumberInArray(arr) {
arr.sort().reverse();
if (arr.length === 0) {
return 0;
} else {
let newarr = [];
arr.map(function (a) {
if (typeof(a) === "number") {
newarr.push(a);
}
});
return newarr[0];
}
}
위와 같이 array 중 가장 큰 숫자를 return 하는 함수를 작성하였는데
const array = [-1,0,3,100, 99, 2, 99] // should return 100
const array2 = ['a', 3, 4, 2] // should return 4
const array3 = [] // should return 0
위 array 에 적용시키자 첫번째에서 99가 나왔다. 도무지 뭐가 문제인지 알 수 없었으나 검색해보니 javascript에서 sort는 모두 문자취급을 하기때문에 99가 100보다 큰 것으로 취급한다는 사실을 알게되었다.
array.sort((a,b)=>a - b);
구글링을 해보니 위와 같이 람다 함수를 써주어야 두 수를 비교함으로써 숫자 순서대로 배열할 수 있다고한다.
추가
chatgpt에게 물어보니 내거보다 훨씬 깔끔하고 출제 의도에 맞는듯한 코드를 짜주었고, 실제 정답도 이와 비슷했다..ㅜㅜ
function biggestNumberInArray3(arr) {
let highest = -Infinity;
for (item of arr) {
if (highest < item) {
highest = item;
}
}
return highest === -Infinity ? 0 : highest;
}