Как вы глубоко заменили определенные объекты на дочерние значения в Lodash? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть данные, которые мне не нужны:

title: {'en-US': 'Example Title}

Я хочу создать функцию, которая превращает все объекты локализации в строку.

title: 'Example Title'

Какие методы lodash будут полезны для этого?

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Согласно данным вашего примера, вы можете использовать _.mapValues() с именем свойства перевода, который вы хотите:

const data = {
  title: {'en-US': 'Example Title'}
}

const result = _.mapValues(data, 'en-US')

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
0 голосов
/ 15 апреля 2019

Предполагая, что у вас есть массив объектов с этой структурой, и все местоположения могут быть разными, вот как вы можете подойти к нему с помощью lodash:

const data = [{id:11,title:{'en-US':'Example Title 11'}},{id:12,title:{'tr-TR':'Example Title 12'}},{id:13,title:{'en-GB':'Example Title 13'}}];

function removeLocation(data) {
  return _.map(data, obj => {
    const key = _.keys(obj.title)[0];
    return { ...obj, title: obj.title[key] };
  });
}

console.log(removeLocation(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

Но если вы собираетесь это сделать, вы можете сэкономить несколько КБ и использовать собственные методы JS:

const data = [{id:11,title:{'en-US':'Example Title 11'}},{id:12,title:{'tr-TR':'Example Title 12'}},{id:13,title:{'en-GB':'Example Title 13'}}];

function removeLocation(data) {
  return data.map(obj => {
    const key = Object.keys(obj.title)[0];
    return { ...obj, title: obj.title[key] };
  });
}

console.log(removeLocation(data));
...