JavaScript: деструктуризация объекта - PullRequest
0 голосов
/ 13 октября 2019

У меня есть этот объект:

{
  "userAuth": {
    "id": 1,
    "uuid": "e30fa23a-bfe4-495e-b6ac-79d49cb9a5a5",
    "login": 12,
    "password": "",
    "role": "WORKER_ROLE",
    "user": {
      "id": 2,
      "uuid": "f0ca9c33-a5b7-48c1-9956-1d4d372475ec",
      "firstName": "Adrian",
      "lastName": "Pietrzak",
      "email": "test111@test.com",
      "phone": null,
      "avatar": null,
      "street": "string",
      "city": "string",
      "state": "string",
      "zip": "string",
      "createdAt": "2019-10-12",
      "lastLogin": "2019-11-29T20:03:17.000Z",
      "lastLogout": null
    }
  },
  "iat": 1570996289
}

, и я хотел бы возразить против этого:

{
    "role": "WORKER_ROLE",
    "uuid": "f0ca9c33-a5b7-48c1-9956-1d4d372475ec"
}

как сделать из него объект разрушения данных? Я пытаюсь это:

const { role, user.uuid } = userAuth; 

Ответы [ 3 ]

4 голосов
/ 13 октября 2019

Разрушение не строит объект. Сначала вам нужно выполнить деструктуризацию в локальные переменные:

const { role, user: { uuid } } = userAuth;

, а затем построить результат из них:

const result = { role, uuid };

В качестве альтернативы, использовать один оператор без какой-либо деструктуризации:

const result = { role: userAuth.role, uuid: userAuth.user.uuid };
0 голосов
/ 13 октября 2019

Это пример ответа. Я думаю, что вы должны вызывать свойство userAuth вашего объекта.

const obj = {
      "userAuth": {
        "id": 1,
        "uuid": "e30fa23a-bfe4-495e-b6ac-79d49cb9a5a5",
        "login": 12,
        "password": "",
        "role": "WORKER_ROLE",
        "user": {
          "id": 2,
          "uuid": "f0ca9c33-a5b7-48c1-9956-1d4d372475ec",
          "firstName": "Adrian",
          "lastName": "Pietrzak",
          "email": "test111@test.com",
          "phone": null,
          "avatar": null,
          "street": "string",
          "city": "string",
          "state": "string",
          "zip": "string",
          "createdAt": "2019-10-12",
          "lastLogin": "2019-11-29T20:03:17.000Z",
          "lastLogout": null
        }
      },
      "iat": 1570996289
    }

const {role, user: {uuid} } = obj.userAuth;

console.log({role: role, uuid: uuid}) // this gives output, that you expect
0 голосов
/ 13 октября 2019

У вас может быть IIFE, который разрушает объект и возвращает деструктурированные свойства:

const data = {
  "userAuth": {
    "id": 1,
    "uuid": "e30fa23a-bfe4-495e-b6ac-79d49cb9a5a5",
    "login": 12,
    "password": "",
    "role": "WORKER_ROLE",
    "user": {
      "id": 2,
      "uuid": "f0ca9c33-a5b7-48c1-9956-1d4d372475ec",
      "firstName": "Adrian",
      "lastName": "Pietrzak",
      "email": "test111@test.com",
      "phone": null,
      "avatar": null,
      "street": "string",
      "city": "string",
      "state": "string",
      "zip": "string",
      "createdAt": "2019-10-12",
      "lastLogin": "2019-11-29T20:03:17.000Z",
      "lastLogout": null
    }
  },
  "iat": 1570996289
}


const result = (({ role, user: { uuid } }) => ({role, uuid}))(data.userAuth);

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...