deepGet

less than 1 minute read

개요

이 글은 https://www.30secondsofcode.org/에서 작성한 글을 번역 및 확인해보는 글 입니다.

원문 : deepGet

`keys` 배열을 기반으로 중첩된 JSON object내의 목표 값을 찾습니다.

Array내의 중첩된 JSON object 내에서 키를 비교합니다. Array.prototype.reduce()를 사용하여 중첩된 JSON 객체에서 하나씩 값을 가지고 옵니다. 만약 키가 객체내에 존재한다면 목표값을 반환하고 그렇지 않다면 null을 리턴합니다.

const deepGet = (obj, keys) =>
  keys.reduce((xs, x) => {
    console.log('xs::', xs)
    console.log('x::', x)
    return xs && xs[x] !== null && xs[x] !== undefined ? xs[x] : null
  }, obj)

let index = 2
const data = {
  foo: {
    foz: [1, 2, 3],
    bar: {
      baz: ['a', 'b', 'c'],
    },
  },
}
deepGet(data, ['foo', 'foz', index]) // get 3
deepGet(data, ['foo', 'bar', 'baz', 8, 'foz']) // null

Leave a comment