#javascript #node.js #lodash
Вопрос:
У меня есть массив объектов, как показано ниже.
{
"Id": 11,
"name ": "xxN "
}
Как я могу использовать trim
метод lodash для обрезки как ключа, так и значения.
{
"Id": 11,
"name": "xxN"
}
Ожидаемый:
Комментарии:
1. каков ваш ожидаемый результат?
2. добавлен ожидаемый раздел
3. в чем здесь разница?
4. после «имени «: «xxN» это пробел, который мне не нужен
Ответ №1:
Обязательно ли использовать Lodash? С ванильным JavaScript:
result = Object.fromEntries(Object.entries(data).map(([key, value]) =>
[key.trim(), typeof value == 'string' ? value.trim() : value]))
Комментарии:
1. выглядит многообещающе. Но я использую узел 10 для своего проекта и получаю
TypeError: Object.fromEntries is not a function
эту ошибку2. @Nick Узел 10 не поддерживает
Object.fromEntries
. Вам необходимо выполнить обновление до узла 14.3. Да @Spectric, Вот почему я искал lodash. Не удается обновить проект до узла 14. несколько вещей могут сломаться. 😔
4. @Spectric Я предполагаю, что он вообще не может обновиться.
Ответ №2:
Для полноты картины, вот решение Lodash, использующее _.transform()
const obj = {
"Id": 11,
"name ": "xxN "
}
const transformed = _.transform(obj, (result, value, key) => {
result[key.trim()] = typeof value === "string" ? value.trim() : value
})
console.log(transformed)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
Это дает дополнительный бонус в виде создания нового объекта с тем же прототипом, что и ваш оригинал, который может быть удобным, а может и не быть.
Ответ №3:
Использование метода обрезки lodash
const arr = [
{
Id: 11,
"name ": "xxN ",
},
{
Id: 12,
"name ": " yyK ",
},
];
const result = arr.map((o) =>
Object.fromEntries(
Object.entries(o).map(([k, v]) => [k, typeof v === "string" ? _.trim(v) : v])
)
);
console.log(result);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
Ответ №4:
Ванильный js был бы лучше, если бы у вас была поддержка для этого, но с lodash
var trimmed = _.fromPairs(
_.map(input, (value, key) => [
_.trim(key),
typeof value === "string" ? _.trim(value) : value
])
);
Комментарии:
1. Вам это нужно
_.toPairs
? Не_.map()
работает с объектами?2. @Бармар, Хорошее решение