#javascript #lodash
#javascript #lodash
Вопрос:
У меня есть данные, которые поставляются с локализацией, которая мне не нужна:
title: {'en-US': 'Example Title}
Я хочу создать функцию, которая превращает все объекты локализации в строку.
title: 'Example Title'
Какие методы lodash были бы полезны для этого?
Комментарии:
1. можете ли вы добавить образец массива данных / объекта?
Ответ №1:
Согласно вашим данным примера, вы можете использовать _.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>
Ответ №2:
Предполагая, что у вас есть массив объектов с такой структурой, и все местоположения могут быть разными, вот как вы можете подойти к этому с помощью 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));