Я бы просто использовал простой цикл for-of
.Вы получите reduce
ответов, но все, что reduce
делает, это добавляет сложность.
const result = {};
for (const {name, id, opening_times} of branches) {
result[name] = {id, opening_times};
}
Live Пример:
let branches = [
{
id: 21,
name: "Branch 1",
opening_times: [ {}, {}, {} ] // Array of objects (Monday, Tuesday etc)
},
{
id: 22,
name: "Branch 2",
opening_times: [ {}, {}, {} ] // Array of objects (Monday, Tuesday etc)
},
// .. etc
];
const result = {};
for (const {name, id, opening_times} of branches) {
result[name] = {id, opening_times};
}
console.log(result);
.as-console-wrapper {
max-height: 100% !important;
}
Добавление в Код предложения маньяка об использовании отдыха:
const result = {};
for (const {name, ...entry} of branches) {
result[name] = entry;
}
Live Пример:
let branches = [
{
id: 21,
name: "Branch 1",
opening_times: [ {}, {}, {} ] // Array of objects (Monday, Tuesday etc)
},
{
id: 22,
name: "Branch 2",
opening_times: [ {}, {}, {} ] // Array of objects (Monday, Tuesday etc)
},
// .. etc
];
const result = {};
for (const {name, ...entry} of branches) {
result[name] = entry;
}
console.log(result);
.as-console-wrapper {
max-height: 100% !important;
}
Они немного отличаются тем, что первый явно использует только id
и opening_times
в результате, ноВ остальных версиях используются все свойства, кроме name
.И, конечно, есть разница в удобочитаемости (явная и неявная), но есть места, где я бы использовал каждый из них.