오늘은 공부 중/자바스크립트

[Javscript] map함수를 쓰면 undefined가 저장, 반환될 때

이도토리 2022. 2. 23. 18:06

 

와 정말 오랜만에 블로그에 들어온 것 같다.

9월 이후로 미친듯이 바빠지기도 했고, 내가 배운 걸 기록하는 것에 대해

의미나 방향성을 잃었던 것 같기도 하다.

 

기록광인 내가 기록을 안 했다는 사실 자체가 이 업에 대한 애정이 둔해졌음을 의미하는 걸까.. 잘 모르겠다.

오히려 이런 마음가짐이야말로 코딩을 하기 가장 수월한 거 같기도 하고.

욕심도 두려움도 없는 그런 상태 말이죠.

 

 

하지만 요즘은 다시 기운을 얻었기에 오늘 배운 것을 다시 기록해보자.

 

map 속에 if문 조건을 걸고 그 안에만 return을 넣어줬는데도 if문 조건이 성립하지 않으면 

undefiend를 물고 들어와서 에러가 나는 경우가 발생했다.

      let b = a.map((item) => {
          if (typeof item ==='string') {
            return item;
          }
      });

이렇게 짜뒀는데 string (예시)이 아닐 경우에도 자꾸 undefiend가 섞여들어와서 

스택오버플로우의 도움을 빌려서 오늘도 해결했다.

 

https://stackoverflow.com/questions/16037049/why-does-javascript-map-function-return-undefined

 

Why does JavaScript map function return undefined?

My code var arr = ['a','b',1]; var results = arr.map(function(item){ if(typeof item ==='string'){return item;} }); This gives the following results ["a",&

stackoverflow.com

이런 때 쓰는 건 map이 아니라신다. filter를 써야만 걸러서 가져오는 거라 해서 그렇게 했다.

map을 filter로만 바꿔도 바로 해결.

 

 

근데 이제 typescript를 쓰고 있다 보니까 filter 조건을 주면서 다른 key를 하나라도 추가하면 바로 또

그런 거 없다고 에러가 떠서 임시로 type:any로 두고 또 다시 스택 오버플로우 (내맘의 고향)를 찾았다.

 

 

https://stackoverflow.com/questions/43471160/javascript-array-filter-shows-type-error

 

javascript array filter shows type error

I want to get the value from array. It shows Type error. The code is var user = "username6"; var result = categories.filter(x => x.user)[0].user; TypeError: Cannot read property 'user' of unde...

stackoverflow.com

.이 아니라 []로 표기하라신다.

따라했더니 역시 바로 해결. 갓버플로우

 

점 표기법 대신 대괄호 표기법을 사용해야 합니다.

 

개체의 속성에 액세스하는 방법 에는 두 가지가 있습니다.

  • 점 표기법:something.bar
  • 대괄호 표기법:something['bar']

대괄호 사이의 값은 모든 표현식이 될 수 있습니다. 따라서 속성 이름이 변수에 저장되어 있으면 대괄호 표기법을 사용해야 합니다.

여기는 친절한 설명까지. 갓오버플로우 감삼다


https://stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable

 

Dynamically access object property using variable

I'm trying to access a property of an object using a dynamic name. Is this possible? const something = { bar: "Foobar!" }; const foo = 'bar'; something.foo; // The idea is to access something.bar,

stackoverflow.com

reduce map filter 나에겐 너무 먼 삼형제.