Доступ к данным () объекта из Vue - PullRequest
1 голос
/ 18 апреля 2020

(для конвертера валют)

Мне нужно получить доступ к объекту, подобному этому:

rates:
  AUD: 1.708562
  SGD: 1.546211

Я получаю эти ставки из API, но они не приходят в порядок. то есть, если я прошу USD к GBP, он сначала отобразит GBP. Поэтому мне нужен способ получить запрошенные символы для получения значений.

Я попробовал это:

const from = res.rates.this.convertFrom.symbol;
// -----AND-----
const fromSymbol = this.convertFrom.symbol;
const from = res.rates.fromSymbol.toString();

Что не сработало

Ссылка на codesandbox

PS: this.convertFrom.symbol возвращает ввод от пользователя. В данном случае это symbol: 'SGD'

1 Ответ

1 голос
/ 19 апреля 2020

Итак, в основном у вас есть данные настройки, такие как:

convertFrom: {
    currency: "GBP: British Pounds",
    symbol: "",
    amount: 0
},
  convertTo: {
    currency: "USD: United States Dollar",
      symbol: "",
        amount: 0
  }

Далее, внутри convert() метода вы также установили символ валюты как:

this.convertFrom.symbol = this.convertFrom.currency.toString().split(":")[0];
this.convertTo.symbol = this.convertTo.currency.toString().split(":")[0];

Итак, теперь значения из convertFrom.symbol и convertTo.symbol:

this.convertFrom.symbol => "GBP"
this.convertTo.symbol => "USD"

Вы также упомянули ответ fetch здесь:

{
    "success": true,
    "base": "EUR",
    "rates": {
        "GBP": 0.869339,
        "USD": 1.0875
    }
}

Теперь мы легко получаем доступ к свойствам объекта, используя Точечная запись или скобка. Но поскольку здесь ключи rates объекта являются динамическими c, нам необходимо использовать скобочные обозначения, такие как:

const from = res.rates[this.convertFrom.symbol]
const to = res.rates[this.convertTo.symbol]

Демо:

const res = {
  "success": true,
  "base": "EUR",
  "rates": {
    "GBP": 0.869339,
    "USD": 1.0875
  }
}

const data = {
  convertFrom: { symbol: "GBP" },
  convertTo: { symbol: "USD" }
}

const from = res.rates[data.convertFrom.symbol];
const to = res.rates[data.convertTo.symbol];

console.log('From:\t', from)
console.log('To:\t', to)
...