isNaN 은 ?
const alpha = "abc";
const num = 21;
console.log(isNaN(alpha)); // true
console.log(isNaN(num)); // false
Array 의 정규표현식으로 "split"
non-digit
을 의미, 숫자가 아닌 모든 문자숫자가 아닌 문자가 하나 이상 연속으로 나타나는 모든 부분 문자열과 일치
const str = "ab123c12ad442dcccAWE2";
const nums_1 = str.split(/\D+/); // 숫자만
const nums_2 = str.split(/["A-Za-z"]/g); // 영어 대소문자 제외
console.log(nums_1); // [123,12,442,2]
console.log(nums_2); // [123,12,442,2]
안전지대 ( 프로그래머스 )
function solution(board) {
let outside = [[-1,0], [-1,-1], [-1,1], [0,-1],[0,1],[1,0], [1,-1], [1,1]];
let safezone = 0;
board.forEach((row, y, self) => row.forEach((it, x) => {
if (it === 1) return false;
return outside.some(([oy, ox]) => !!self[oy + y]?.[ox + x])
? false : safezone++;
}));
return safezone;
}
각 배열 요소는 0 또는 1의 값을 가짐
outside : 주어진 좌표를 중심으로 하는 주변 좌표의
오프셋(즉, 상대적인 위치)을 나타냄
safezone : 1로 둘러싸여 있지 않은 0의 개수를 저장하기 위한 변수
board.forEach : 배열의 모든 요소를 순회하면서 다음 작업을 수행
ㄴ> 현재 요소의 값이 1이면,
해당 위치는 안전 지대가 아니므로 return false
ㄴ> outside 배열의 모든 오프셋을 이용하여
주어진 좌표 주변의 값들을 확인하고,
주변에 1이 하나라도 있으면 해당 위치는 안전 지대 X
주변에 1이 없으면 safezone을 1 증가
Array 의
some
배열의 어떤 요소가 주어진 판별 함수를 만족하는지 테스트
const array = [1, 3, 5, 7, 9];
console.log(array.some(num => num % 2 === 0)); // false
console.log(array.some(num => num > 6)); // true
!! 란?
주어진 값을 불리언 값으로 변환
console.log(!!0); // false
console.log(!!"hello"); // true
console.log(!!null); // false