hj1004
142
2021-09-16 11:02:00
4
108

자바스크립트 리스트안에 객체 찾는법 알수있을까요??



let yearList = [
    {year: 2012,
    count: 1},
    {year: 2013,
    count: 5},
    {year: 2016,
    count: 8},
]

이런식으로 데이터가 있다면

for문을 사용하지 않고

if문으로 yearList 안에 year가 특정한 값이 있는지 확인하고 싶은데

어떻게 해야될까요..?

0
  • 답변 4

  • HJOW
    3k
    2021-09-16 11:22:14 작성 2021-09-16 11:32:07 수정됨

    for / while 중 하나 사용 필수입니다. (혹은 jQuery 의 each 등)


    문자열이거나 정수 리터럴 같은 경우였다면 indexOf 로 쉽게 찾을 수 있었을겁니다.

    근데 저 배열안에 있는 요소들은 객체들이라서요.


    (최신 ES에 추가된 함수들을 빼먹었네요... 근데 얘내들도 결국 반복문이라)

  • 반응콩
    142
    2021-09-16 11:27:30
    yearList.find(obj=>{...})
  • 초보자1212
    2k
    2021-09-16 11:27:46

    윗님께선 내부적으로는 for 문처럼 loop 를 반드시 실행하기때문에 loop 없이는 

    원하는 요소를 검색하기가 불가능하다는 말씀을하신게 아닌가 싶습니다. 중요한 내용이죠.


    이 경우에는 이제 객체 안에 배열이 들어있고 특정 조건에만 부합하는 요소를 찾기 위해 사용할 수 있는 find 가 있어요.



    const yearList = [
      { year: 2012, count: 1 },
      { year: 2013, count: 5 },
      { year: 2016, count: 8 },
    ];
    
    function find(yearList, year) {
      return yearList.find(list => list.year === year);
    }
    
    find(yearList, 2012) 
    // {year: 2012, count: 1}
    find(yearList, 2013)
    // {year: 2013, count: 5}
    find(yearList, 2015)
    // undefined
    find(yearList, 2016)
    // {year: 2016, count: 8)


    find 는 요소를 찾지 못하면 undefined 를 반환하니까 주의하세요

  • hj1004
    142
    2021-09-16 13:52:14

    모두 감사드립니다 잘 해결했습니다!

  • 로그인을 하시면 답변을 등록할 수 있습니다.