Frontend/React

[ λ¦¬μ•‘νŠΈ(React) ] Object value에 NaN값이 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” ν•¨μˆ˜ λ§Œλ“€κΈ°

YWTechIT 2021. 6. 28. 20:22
728x90

πŸ“ Object value에 NaN값이 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” ν•¨μˆ˜ λ§Œλ“€κΈ°

μ²˜μŒμ— NaN 값을 ν™•μΈν•˜κΈ° μœ„ν•΄ in, ===, !=λ₯Ό μ‚¬μš©ν–ˆλŠ”λ° νŒλ³„μ΄ λ˜μ§€ μ•Šμ•˜λ‹€.


μ™œ κ·ΈλŸ°μ§€ MDNκ³΅μ‹λ¬Έμ„œμ—μ„œ μ°Ύμ•„λ³΄λ‹ˆκΉŒ NaN νŒλ³„μ€ 비ꡐ νŒλ³„ λŒ€μ‹  isNaN() ν˜Ήμ€ Number.isNaN() λ‚΄μž₯ν•¨μˆ˜λ‘œ νŒλ³„ν•΄μ•Ό ν•œλ‹€κ³  λ‚˜μ™€μžˆμ—ˆλ‹€. (⭐️ κ³΅μ‹λ¬Έμ„œμ˜ μ€‘μš”μ„± ⭐️) isNaN, Number.isNaN()은 λ‘˜λ‹€ NaN을 νŒλ³„ν•˜λŠ” ν•¨μˆ˜μ΄μ§€λ§Œ μˆœμ„œκ°€ 쑰금 λ‹€λ₯΄λ‹€.

 

  1. isNaN(): ν˜„μž¬ 값을 숫자둜 λ³€ν™˜ν•˜κ³  NaN νŒλ³„
  2. Number.isNaN(): ν˜„μž¬ typeof => Number && 값이 NaN μΌλ•Œλ§Œ νŒλ³„

 

이λ₯Ό λ°”νƒ•μœΌλ‘œ key:value ν˜•νƒœλ‘œ 이루어진 κ°μ²΄μ—μ„œ isNaN, Number.isNaN() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ‹ˆκΉŒ μ •ν™•ν•œ νŒλ³„μ΄ 이루어지지 μ•Šμ•˜λ‹€. μ™œλƒν•˜λ©΄ object 값을 Number ν˜•νƒœλ‘œ λ³€ν™˜ν•˜λ©΄ NaN이 λ‚˜μ˜€κΈ° λ•Œλ¬Έμ΄λ‹€. 이 μƒνƒœμ—μ„œ NaN ν•¨μˆ˜ νŒλ³„μ„ ν•˜κ²Œ 되면 NaN의 μœ λ¬΄μ™€ 상관없이 trueκ°€ return λœλ‹€.

 

const myObject = {name: 'μ•ˆμ˜μš°', age: 27, sex: NaN}
const yourObject = {name: 'μ•ˆμ˜μ€€', age: 14, sex: 'female'}

console.log(Number(myObject))
πŸ‘‰πŸ½ NaN

console.log(Number(yourObject))
πŸ‘‰πŸ½ NaN

 

κ·Έλž˜μ„œ isNaN, Number.isNaN() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹  arrayκ°’μ—μ„œ NaN이 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” includes() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆλ‹€.

  1. Object의 Valueλ§Œμ„ 뽑아 array(λ°°μ—΄)둜 λ§Œλ“ λ‹€.
  2. includes() λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•΄ 배열이 NaN값을 ν¬ν•¨ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•œλ‹€.

 

const myObject = {name: 'μ•ˆμ˜μš°', age: 27, sex: NaN}
const yourObject = {name: 'μ•ˆμ˜μ€€', age: 14, sex: 'female'}

const getCheckNaN = (object) => {
    let arrayValues =  Object.values(object);
    let current;

    if (arrayValues.includes(NaN)){
        current = true
    }else{
        current = false
    }
    return current
}

console.log(getCheckNaN(myInfo))
πŸ‘‰πŸ½ true

console.log(getCheckNaN(yourInfo))
πŸ‘‰πŸ½ false
λ°˜μ‘ν˜•