Рамда: Есть ли способ найти конкретное значение ключа вложенного объекта?

Я хочу найти конкретное значение ключа вложенного объекта или нет.

{
  'a': {
    'area': 'abc'
  },
  'b': {
    'area': {
      'city': 'aaaa',
      'state': 'ggggg'
    }
  }
}

В приведенном выше примере я хочу найти "а" и "б" является объектом или вложенным объектом?

1 ответ

Если вы хотите узнать, содержат ли все ключи в объекте вложенные объекты, то одним из возможных решений является преобразование всех значений объекта в логические значения с использованием R.map а также R.propSatisfies, представляющий, было ли вложенное свойство объектом или нет.

const fn = R.map(R.propSatisfies(R.is(Object), 'area'))

const example = {
  'a': {
    'area': 'abc'
  },
  'b': {
    'area': {
      'city': 'aaaa',
      'state': 'ggggg'
    }
  }
}

console.log(fn(example))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

Если вы просто хотите узнать, содержит ли конкретный ключ объекта вложенный объект, то вы можете сделать это с помощью композиции R.prop а также R.propSatisfies,

const fn = R.pipe(R.prop, R.propSatisfies(R.is(Object), 'area'))

const example = {
  'a': {
    'area': 'abc'
  },
  'b': {
    'area': {
      'city': 'aaaa',
      'state': 'ggggg'
    }
  }
}

console.log('a:', fn('a', example))
console.log('b:', fn('b', example))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

Другие вопросы по тегам