이번의 회고..

늦었지만 천천히 회보고해보고자 블로깅을 해보고자한다.

const original = {
  name: '김코딩',
  company: {
    name: 'Unemployed',
    skill: ['Development', 'Writing'],
    role: {
      name: 'Software Engineer'
    }
  },
  age: 35
}

const getChanged = () => {


let role = {name : 'Software Engineer'}
let company = {name : "Code States" , skill : ['Development','Writing'], role}

let rest = {company ,name :'김코딩'}

  return  {age :35,...rest}

}
module.exports = {
  original,
  getChanged
}

내 코드는 이렇다. 나는 spread/rest 가 통과가 되질 않았다. 사실 값은 원하는 값으로 나오긴했는데.. 다시 읽어보니 spread/rest를 이용하긴했는데 original 객체를 이용하질 않았다. 당시에 나도 이용할려고했으나, 일단은 값을 변경을 해야했기에, ( name: '김코딩' 보다 age : 35가 먼저나왔어야했다.)

순서를 바꾸고 접근, 그리고 original.company에 'Code states'를 name의 밸류값으로 넣었는데 엉뚱하게 작동하여 궁리끝에 위와같이 작성하였으나 오류였다..

결과는 다음과같다.

const original = {
  name: '김코딩',
  company: {
    name: 'Unemployed',
    skill: ['Development', 'Writing'],
    role: {
      name: 'Software Engineer'
    }
  },
  age: 35
}

const getChanged = () => {
  return {
    ...original,
    company: {
      ...original.company,
      name: 'Code States'
    }
  }
}

이렇게 보다시피 볼땐
내 코드완 다르게 순서는 안바뀌었다
{age : 35, .., name : '김코딩'} 이 아닌
{name : '김코딩', ..., age : 35} 으로 되어있다.. 나도 최초에 저렇게 생각은 들었으나
여기서 찍혀봤을때 전혀 그런생각을 못들었다 그래서 내가 위의 풀이법을 썼던 1차적인 이유다.

두번째는 바로
original.company 이다. 콘솔창에서 original.company를 입력하면 name외에 company 객체 값 모두가 쭈욱 나열되어 나타난다. 그래서 나는 이값을 천천히 접근하고싶어서
original.company.name 으로 접근하였다. 그리고 그상태에서 'Code state'로 바꿀수있음을 확인하고 위와같은 내 풀이법대로 따로 선언하고 만들어줬다. 하지만 original객체를 쓰질않아 틀린답이되었다.

그리고 아무리뒤져봐도 이제 알게된 사실은 ,

...original, company,

이 말은 company객체를 접근한다는 것이고 거기 안에있는 name 객체에접근하여 '원하는 값'을 수정할 수 있다는 점이다. 음 확실히 생가각해보니.. spread/rest로 한번 값을 펼쳐주고 그안에있는 또다른 객체를 객체형태로 입력해주고,
그 객체 내부또한 'spread'해주는데.. 그중 한부분에 접근해서 '원하는값' 으로 바꾼다...

사실 여러군대 전개함수에대찾아봤지만 결국 그 케이스를 찾을순 없었다..

이렇게 바꿀 수 있음을 확인하였다.

좋은 웹페이지 즐겨찾기