Разрушение вложенного объекта - PullRequest
2 голосов
/ 05 августа 2020

Я хочу использовать деструкцию объекта для упрощения моего кода. Я получаю данные с сервера, и решение - это объект:

data = {
  current: {
     humidity: 73
  }
}

Окончательная функция должна выглядеть так, но это не работает:

extractData({data.current.humidity: humidity  }) {
            return { humidity };
        }

extractData(data);

Как выполнить функцию для этого типа объекта?

Ответы [ 2 ]

6 голосов
/ 05 августа 2020

Шаблоны деструктуризации подобны объектным литералам, поэтому вы не используете точку, вы используете вложение (также имя переменной, ссылающейся на объект [data], не имеет значения):

// (I assume this is a method in a class; otherwise, add `function`)
extractData({current: {humidity}}) {
    return { humidity };
}

Живой пример:

function extractData({current: {humidity}}) {
    return { humidity };
}

const data = {
  current: {
     humidity: 73
  }
};

console.log(extractData(data));

Обратите внимание, что я сохранил ваше возвращаемое значение, которое представляет собой объект со свойством humidity. Если вам просто нужно значение влажности, не используйте {} вокруг него:

// (I assume this is a method in a class; otherwise, add `function`)
extractData({current: {humidity}}) {
    return humidity;
}

Живой пример:

function extractData({current: {humidity}}) {
    return humidity;
}

const data = {
  current: {
     humidity: 73
  }
};

console.log(extractData(data));

Я предполагал, что вы хотите функцию, но , как говорит Ритту , вам она не нужна, если все, что вы хотите сделать, это получить значение humidity; см. их ответ для примера.

3 голосов
/ 05 августа 2020

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

const {current: { humidity}} = data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...