DEV Community

Discussion on: Daily Challenge #50 - Number Neighbor

Collapse
 
chrisachard profile image
Chris Achard

Huh, this one was harder than I expected it to be... that probably means I missed something 🤣

Also, TIL that setting a character of a string in JS with square brackets doesn't throw an error - but also doesn't do anything! example:

let myStr = "abc123"
myStr[0] = 'X'
// myStr is unchanged here!

Solution in javascript:


const numberNeighbor = (number) => {
  return [...number].reduce((arr, num, i) => {
    num = Number(num)

    if(num - 1 >= 0) {
      arr.push([ 
        number.slice(0, i), 
        num - 1, 
        number.slice(i+1) 
      ].join(""))
    }

    if(num + 1 <= 9) {
      arr.push([ 
        number.slice(0, i), 
        num + 1, 
        number.slice(i+1) 
      ].join(""))
    }

    return arr
  }, [])
}
Collapse
 
alfredosalzillo profile image
Alfredo Salzillo

Strings in javascript are immutable, so even if you change a character using the [] notation, it always returns a new string.

This instead work as you expected

// The string is transformed into an Array
const arrString = [..."abc123"]
arrString[0] = "X"
// arrString is now ["X", "b", "c", "1", "2", "3"]
Collapse
 
chrisachard profile image
Chris Achard

Makes sense - thanks! (forgot (or never really knew?) that strings in javascript were immutable)