首页 > 解决方案 > 如何获取 javascript 对象集合的值?

问题描述

当显示消息时,我从对象集合中获得了一个未定义的值。

我应该得到价值并显示它。

有谁知道问题出在哪里,或者我可能遗漏了什么?

链接完整代码 - https://jsfiddle.net/lmanhaes/cq1g5dyt/1/

谢谢。

const ratesValue = [{
    "key": "Pound Sterling",
    "value": 1.30,
  },
  {
    "key": "Euro",
    "value": 1.30,
  },
  {
    "key": "Yen",
    "value": 142.72,
  },
  {
    "key": "Yuan",
    "value": 8.95,
  },
  {
    "key": "Swiss Franc",
    "value": 1.26,
  },
  {
    "key": "Canadian Dollar",
    "value": 1.69,
  },

];


function getCurrency() {
  let cur_type = document.getElementById('currencies').value.trim()
  // trim() method to remove whitespaces and present clean and optimal string

  let msg = cur_type ? "One US Dollar buys you " + ratesValue[cur_type] + " " + cur_type : ""
  document.getElementById("exchangerate").innerHTML = msg
}

// event handler -- put in place to be used when value selected from dropdown list.
window.onload = function () {
  getCurrency();

};
<h1>Currency Exchange Rates to US Dollar</h1>
<!--value of an element has been changed.-->
<select id="currencies" onchange="getCurrency()">
  <option value="">Select a currency</option>
  <option>Pound Sterling</option>
  <option>Euro</option>
  <option>Yen</option>
  <option>Yuan</option>
  <option>Swiss Franc</option>
  <option>Canadian Dollar</option>
</select>
<p id="exchangerate"></p>

标签: javascriptobjectkey-value

解决方案


ratesValue是对象数组,所以你必须filter通过数组来获取你需要的对象 key 。

所以像这样改变这个功能

const value = ratesValue.find(item=>item.key === cur_type).value;
let msg = cur_type ? "One US Dollar buys you " + value + " " + cur_type : ""

推荐阅读