Как динамически разрушить огромный JSON объект? - PullRequest
1 голос
/ 08 февраля 2020
class Options extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      //previously called validOptions //Whether JSON_output has been uploaded to Azure
      optionAvailbility: false,
      // dataEngineResult: null
      dataEngineResult: {
        attribute_description: {
          age: {
            name: "age",
            data_type: "Integer",
            category: {
            ...
          },
          education:{...},
          income:{...},
          ....
       }
    }
   }
  }
}

В основном у меня есть этот огромный json объект, который является результатом, полученным из azure, который я обновляю до своего состояния в моем компоненте Option. js.

В этом компоненте я хочу получить все атрибуты путем уничтожения.

Почему этот метод неправильный:

const ageAttr, educationAttr..., incomeAttr = this.state.dataEngineResult.attribute_description

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 08 февраля 2020

Так как attribue_description является объектом. Вы должны использовать уничтожение объекта и использовать имя свойства, которое вы хотите получить.

const { age, education, income } = this.state.dataEngineResult.attribute_description

Если вы хотите изменить имя, вы можете сделать это следующим образом:

const { age: ageAttr, education: educationAttr, income: incomeAttr } = this.state.dataEngineResult.attribute_description
0 голосов
/ 08 февраля 2020

Вы должны использовать Разрушение для этого. Узнайте больше о javascript destructure

Если вы хотите использовать свойства только одного вложенного объекта, используйте метод ниже.

1. const { age, education, income } = this.state.dataEngineResult.attribute_description;

Если вы хотите использовать другие свойства состояния в функции, используйте метод ниже.

2. const {dataEngineResult: {attribute_description: {age, education, income}},optionAvailbility } = this.state;
...