Array에서 사용하고 싶은 메소드가 Observer가 되어 있어 사용할 수 없는 문제의 대처법

현상



맵이 없다! ! 😇





개요



Nuxt.js에서 여러가지 엉망진창을 했을 때 구그해도 해결 방법이 나오지 않고 막혀 버렸다.
하고 싶은 것은 의외로 간단하고, map 메소드를 사용하고 싶었을 뿐이지만 생각이 들지 않았기 때문에 메모

필자가 취득하려고 한 Array가 Observer가 되어 버린 케이스



assets/js/profile/skill.js
export default {
  language: {
    javaScript: {
      name: 'JavaScript',
      framework: ['Vue.js', 'Nuxt.js', 'React.js', 'AngularJS', 'jQuery']
    }
  }
}

index.vue
import skill from '~/assets/js/profile/skill.js'

이런 식으로 가져온 가운데, framework가 Observer가 됩니다.index.vue 내에서 지정할 때는 skill.language.framework 네요.

대처법


  • Array.prototype. 함수 이름 .call 사용
  • 본래 사용할 수없는 메소드를 사용할 수 있고 할 수있는 괴로운, 많이 사용한 적이 없다

  • ↑의 제1 인수를 Object로 캐스트 한다.
  • 이것을하지 않으면 TypeError: Array.prototype.map called on null or undefined가 발생합니다


  • 코드



    아마도 map 부분을 다시 쓰면 다른 메소드도 작동한다고 생각합니다.
    xxx 부분은 observer가 되어 있는 Array를 넣어 주세요.
          const arr = Array.prototype.map.call(Object(xxx), value => {
            // process
          })
    

    좋은 웹페이지 즐겨찾기