【问题标题】:Trying to get an object value in from a key in Javascript试图从 Javascript 中的键中获取对象值
【发布时间】:2017-11-09 08:06:27
【问题描述】:

我正在尝试从对象中的值(国家代码)获取国家标签(名称)。

在 Vue.js 中,我正在尝试构建一个计算属性,以根据 API 请求中的国家/地区代码返回国家/地区名称。

在模板中:

countryLabel () {
    var countries = require('../../plugins/countries')
    var countryCode = this.content.country
    function getLabelByValue(countries, countryCode) {
        return Object.keys(countries).find(label => countries[value] === countryCode)
    }
}

来自国家/地区列表:

module.exports = [
    { value: 'AF', label: 'Afghanistan' },
    { value: 'AX', label: 'Aland Islands' },
    { value: 'AL', label: 'Albania' },
    { value: 'DZ', label: 'Algeria' },
    { value: 'AS', label: 'American Samoa' },
    { value: 'AD', label: 'Andorra' },
    { value: 'AO', label: 'Angola' },
    { value: 'AI', label: 'Anguilla' },
    { value: 'AQ', label: 'Antarctica' },
    { value: 'AG', label: 'Antigua and Barbuda' },
    ...
]

【问题讨论】:

  • 那有什么问题?
  • 我没有收到任何返回
  • 好吧,数组上的 Object.keys 将返回0->n。我想你想要的只是countries.find(country => country.value === countryCode)

标签: javascript arrays object vue.js


【解决方案1】:

根据 rossipedia 的回答,这对我有用:

countryLabel () {
    const countries = require('../../plugins/countries')
    return countries.find(item => item.value === this.content.country).label
}

【讨论】:

  • 请注意this 上下文。如果您决定将箭头函数更改为标准函数,则此代码将中断。
【解决方案2】:

更好的方法是使用对象,因为对象是字典,所以这始终是在 javascript 中查找任何内容的最快方法。因此,如果您将导出更改为: { AF: 'Afghanistan', AX: 'Aland Islands', etc... } 那么您就可以通过countries[countryCode] 进行即时查找。

【讨论】:

  • 谢谢。出于好奇,您将如何查找?
  • 查看我帖子的最后一部分。它只是一个普通对象,所以你会做类似 `countries['AF'] 的事情,然后你会得到那个键的值。
  • 我明白你的意思。谢谢
【解决方案3】:

您可能不想在数组上调用Object.keys

这样的东西可能是你想要的更多:

function getLabelByValue(countries, countryCode) {
    const entry = countries.find(item => item.value === countryCode);
    return entry ? entry.label : null;
}

问题是在数组上调用Object.keys会返回一个已经转换成字符串的数字数组:

> console.log(Object.keys(['this', 'is', 'an', 'array']));
['0', '1', '2', '3']

由于您的exports 已经是一个数组,您可以直接在其上调用find()

【讨论】:

  • 我不得不删除包裹在它周围的函数,但它有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多