Как разложить вложенный объект в Javascript? - PullRequest
0 голосов
/ 29 мая 2020

Я пытался скопировать свойства вложенного объекта в другой объект с помощью оператора распространения. Но у меня возникла ошибка.
Итак, я попытался раздельно распределить вложенный объект:

try {
  console.log(
    ...{
      autre_panne: { nbr_op_sav: 12, percentage_op_sav: 0 },
      fonctionnement_bluetooth: { nbr_op_sav: 13, percentage_op_sav: 0 },
      memoire_interne: { nbr_op_sav: 15, percentage_op_sav: 0 },
      non_precise: { nbr_op_sav: 15, percentage_op_sav: 0 },
      panne_audio: { nbr_op_sav: 68, percentage_op_sav: 0 },
      piece_aspect_mecanique: { nbr_op_sav: 78, percentage_op_sav: 0 },
      probleme_charge: { nbr_op_sav: 2, percentage_op_sav: 0 },
    }
  );
} catch (error) {
  console.log("Error spreading");
  console.log(error);
}

Я получаю эту ошибку:

Ошибка распространения TypeError: Найдено не- вызываемый @@ итератор
в Object. (C: \ Users \ Avempace \ Desktop \ Projects \ plays \ play. js: 227: 11)
в Module._compile (internal / modules / cjs / loader. js: 955: 30)
в Object.Module._extensions .. js (internal / modules / cjs / loader. js: 991: 10)
в Module.load (internal / modules / cjs / loader. js : 811: 32)
в Function.Module._load (internal / modules / cjs / loader. js: 723: 14)
в Function.Module.runMain (internal / modules / cjs / loader. js: 1043: 10)


PS: Подобные вопросы, упомянутые в SO, не отвечают на мой вопрос:
1. Как использовать распространение объекта с вложенными свойствами?
2. Как разложить вложенные свойства в объекте?

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Не уверен, что это проблема способа тестирования вашей реальной проблемы, но вам нужно распространить свой объект на объект - в вызове console.log я не уверен, каким должен быть конечный результат, но вы, если вы поместите в объект, он должен работать:

try {
  console.log(
    {...{
      autre_panne: { nbr_op_sav: 12, percentage_op_sav: 0 },
      fonctionnement_bluetooth: { nbr_op_sav: 13, percentage_op_sav: 0 },
      memoire_interne: { nbr_op_sav: 15, percentage_op_sav: 0 },
      non_precise: { nbr_op_sav: 15, percentage_op_sav: 0 },
      panne_audio: { nbr_op_sav: 68, percentage_op_sav: 0 },
      piece_aspect_mecanique: { nbr_op_sav: 78, percentage_op_sav: 0 },
      probleme_charge: { nbr_op_sav: 2, percentage_op_sav: 0 },
    }}
  );
} catch (error) {
  console.log("Error spreading");
  console.log(error);
}

Под «он должен работать» я имею в виду, что вы должны иметь возможность распечатать объект (который фактически распространяется на новый объект).

0 голосов
/ 29 мая 2020

Вы можете попробовать:

const myData = {<the data>} 
console.log(...Object.entries(myData).flat());

Object.entries преобразует каждую пару ключ-значение в массивы внутри массива. flat() распространяет каждый массив на основной массив. ...Object деструктурирует последний массив.

...