Изменить структуру объекта в JS - PullRequest
1 голос
/ 22 марта 2020
const a = {
  0: { country: "france", date:"sfzef"},
  1: { country: "italie", date:"ttttt"},
  2: { country: "belgique", date:"zzzee"}
}

let obj = {}
for (const property in a) {
  obj = {...obj, `${a[property].country}: ${a[property]}`}
}

Мне бы хотелось:

obj = {
  france: { country: "france", date:"sfzef"},
  italie: { country: "italie", date:"ttttt"},
  belgique: { country: "belgique", date:"zzzee"}
}

Я пытался 4 часа, заранее спасибо тому, кто мне поможет

Ответы [ 2 ]

0 голосов
/ 22 марта 2020

Альтернатива: используйте reducer на записях Object (см. MDN )

const a = {
  0: { country: "france", date:"sfzef"},
  1: { country: "italie", date:"ttttt"},
  2: { country: "belgique", date:"zzzee"}
};
const b = Object.entries(a)
  .reduce( (acc, [key, value]) => ({...acc, [value.country]: value}), {} );

console.log(b);
0 голосов
/ 22 марта 2020

Вы близки, но вы создаете строку, когда вам нужно выполнить пару ключ / значение объекта. Вычисленный ключ может быть заключен в квадратные скобки вокруг ключа:

const a = {
  0: { country: "france", date:"sfzef"},
  1: { country: "italie", date:"ttttt"},
  2: { country: "belgique", date:"zzzee"}
}

let obj = {}
for (const property in a) {
  obj = {...obj, [a[property].country]: a[property]}
}

console.log(obj);

Если вы хотите избежать копирования объекта каждый раз, вы можете сделать это:

let obj = {}
for (const property in a) {
  obj[a[property].country] = a[property]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...