Как я могу разрушить объект javascript, содержащий другие объекты внутри него - PullRequest
1 голос
/ 10 апреля 2019

У меня есть объект javascript k, из которого я получил profile путем деструктуризации.Новый объект содержит другие объекты внутри него (то есть, включая location, login ... и location также содержит другие объекты внутри него).Проблема, с которой я сейчас сталкиваюсь - это распечатать пол (или любое другое свойство внутри деструктурированного объекта), это работает только тогда, когда я опускаю местоположение в строке для деструктурирования массива профиля.Пожалуйста, мне нужна помощь, чтобы решить эту проблему правильно.

let k = {
"results": [
{
  "gender": "male",
  "name": {
    "title": "mr",
    "first": "eliott",
    "last": "roussel"
  },
  "location": {
    "street": "9072 rue de l'abbé-migne",
    "city": "versailles",
    "state": "indre",
    "postcode": 83762,
    "coordinates": {
      "latitude": "-4.2370",
      "longitude": "-139.6080"
    },
    "timezone": {
      "offset": "-8:00",
      "description": "Pacific Time (US & Canada)"
    }
  },
  "email": "eliott.roussel@example.com",
  "login": {
    "uuid": "3e2e9f7d-ca08-4c81-93b2-f42dd0bbb421",
    "username": "saddog976",
    "password": "chippy",
    "salt": "XPbHVGge",
    "md5": "70ab9b8e14cc0be868dc53995274f5b9",
    "sha1": "4cedb04743f2529ea2a801ec539f8f02731f659d",
    "sha256": "f2c6c1bcdcd0cc4de923501cd5bf87dbd1d948c95abc9f9b08a90b78ae7f5616"
  },
  "dob": {
    "date": "1960-08-08T00:53:25Z",
    "age": 58
  },
  "registered": {
    "date": "2004-07-15T15:57:51Z",
    "age": 14
  },
  "phone": "05-07-77-21-18",
  "cell": "06-64-48-62-07",
  "id": {
    "name": "INSEE",
    "value": "1NNaN32524474 85"
  },
  "picture": {
    "large": "https://randomuser.me/api/portraits/men/81.jpg",
    "medium": "https://randomuser.me/api/portraits/med/men/81.jpg",
    "thumbnail": "https://randomuser.me/api/portraits/thumb/men/81.jpg"
  },
  "nat": "FR"
}
],
"info": {
"seed": "d8ec8b34c6f6c368",
"results": 1,
"page": 1,
"version": "1.2"
 }
}
let l = k.results;
let profile = l[0];
const{gender, name, email, location, login, dob, registered, phone, cell, id, picture, nat} = profile;

alert(gender);

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете переименовать свойство name и location, поскольку оба они являются частями встроенных объектов.

var k = { results: [{ gender: "male", name: { title: "mr", first: "eliott", last: "roussel" }, location: { street: "9072 rue de l'abbé-migne", city: "versailles", state: "indre", postcode: 83762, coordinates: { latitude: "-4.2370", longitude: "-139.6080" }, timezone: { offset: "-8:00", description: "Pacific Time (US & Canada)" } }, email: "eliott.roussel@example.com", login: { uuid: "3e2e9f7d-ca08-4c81-93b2-f42dd0bbb421", username: "saddog976", password: "chippy", salt: "XPbHVGge", md5: "70ab9b8e14cc0be868dc53995274f5b9", sha1: "4cedb04743f2529ea2a801ec539f8f02731f659d", sha256: "f2c6c1bcdcd0cc4de923501cd5bf87dbd1d948c95abc9f9b08a90b78ae7f5616" }, dob: { date: "1960-08-08T00:53:25Z", age: 58 }, registered: { date: "2004-07-15T15:57:51Z", age: 14 }, phone: "05-07-77-21-18", cell: "06-64-48-62-07", id: { name: "INSEE", value: "1NNaN32524474 85" }, picture: { large: "https://randomuser.me/api/portraits/men/81.jpg", medium: "https://randomuser.me/api/portraits/med/men/81.jpg", thumbnail: "https://randomuser.me/api/portraits/thumb/men/81.jpg" }, nat: "FR" }], info: { seed: "d8ec8b34c6f6c368", results: 1, page: 1, version: "1.2" } },
    { gender, name: name2, email, location: loc2, login, dob, registered, phone, cell, id, picture, nat } = k.results[0];

console.log(gender);

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

function process({ gender, name, email, location, login, dob, registered, phone, cell, id, picture, nat }) {
    return gender;
}

var k = { results: [{ gender: "male", name: { title: "mr", first: "eliott", last: "roussel" }, location: { street: "9072 rue de l'abbé-migne", city: "versailles", state: "indre", postcode: 83762, coordinates: { latitude: "-4.2370", longitude: "-139.6080" }, timezone: { offset: "-8:00", description: "Pacific Time (US & Canada)" } }, email: "eliott.roussel@example.com", login: { uuid: "3e2e9f7d-ca08-4c81-93b2-f42dd0bbb421", username: "saddog976", password: "chippy", salt: "XPbHVGge", md5: "70ab9b8e14cc0be868dc53995274f5b9", sha1: "4cedb04743f2529ea2a801ec539f8f02731f659d", sha256: "f2c6c1bcdcd0cc4de923501cd5bf87dbd1d948c95abc9f9b08a90b78ae7f5616" }, dob: { date: "1960-08-08T00:53:25Z", age: 58 }, registered: { date: "2004-07-15T15:57:51Z", age: 14 }, phone: "05-07-77-21-18", cell: "06-64-48-62-07", id: { name: "INSEE", value: "1NNaN32524474 85" }, picture: { large: "https://randomuser.me/api/portraits/men/81.jpg", medium: "https://randomuser.me/api/portraits/med/men/81.jpg", thumbnail: "https://randomuser.me/api/portraits/thumb/men/81.jpg" }, nat: "FR" }], info: { seed: "d8ec8b34c6f6c368", results: 1, page: 1, version: "1.2" } },
    { results: { 0: profile } } = k;

console.log(process(profile));
...