Моя цель: убрать пробелы из ключей объектов.
Например, у меня есть такие записи:
const records = [
{ 'Red Blue': true, 'Orange Strawberry': true, 'Abc Xyz': true },
{ 'Blue Red': true, 'Abc Abc': true, 'Abc Xyz': true },
{ 'Yellow Green': true, 'Apple Banana': true, 'Abc Xyz': true },
]
И нужно удалить пробелы каждого ключа каждой записи, чтобы они были такими:
[
{ 'RedBlue': true, 'OrangeStrawberry': true, 'AbcXyz': true },
{ 'BlueRed': true, 'AbcAbc': true, 'AbcXyz': true },
{ 'YellowGreen': true, 'AppleBanana': true, 'AbcXyz': true },
]
Вопросы:
- Я делаю правильно?
- Есть ли другое решение, которое может решить мою задачу?
Я написал 3 решения: с for in
, с Object.keys().forEach
и с reduce
.
_
Вот 3 моих решения:
const records = [
{ "Red Blue": true, "Orange Strawberry": true, "Abc Xyz": true },
{ "Blue Red": true, "Abc Abc": true, "Abc Xyz": true },
{ "Yellow Green": true, "Apple Banana": true, "Abc Xyz": true },
];
/* 1) for...in */
console.time && console.time('solution 1');
const solution1 = records.map(record => {
const newRecord = {};
for (const key in record) {
newRecord[key.replace(/\s/g, "")] = record[key];
}
return newRecord;
});
console.timeEnd && console.timeEnd('solution 1');
/* 2) Object.keys(records).forEach */
console.time && console.time('solution 2');
const solution2 = records.map(parent => {
const newParent = {};
Object.keys(parent).forEach(key => {
newParent[key.replace(/\s/g, "")] = parent[key];
});
return newParent;
});
console.timeEnd && console.timeEnd('solution 2');
/* 3) reduce */
console.time && console.time('solution 3');
const solution3 = records.map(parent => {
return Object.keys(parent).reduce((acc, key) => ({
...acc,
[key.replace(/\s/g, "")]: parent[key],
}), {});
});
console.timeEnd && console.timeEnd('solution 3');
/* All solutions has the same result */
console.log({
solution1,
solution2,
solution3,
});
.as-console-wrapper { max-height: 100% !important; top: 0; }
ОБНОВЛЕНО: добавлено console.time
для измерения времени выполнения каждого решения.