【问题标题】:How to get a value in an array that's in a list of arrays in javascript如何在javascript中的数组列表中获取数组中的值
【发布时间】:2016-05-29 04:01:46
【问题描述】:

要填充 HTML 选择字段,我有以下数据:

let options = [
 {'label': '--Choose--', 'value':''},
 {'label': 'Linux', 'value':'linux'},
 {'label': 'OSX', 'value':'mac'},
 {'label': 'Windows 98', 'value':'win9x'},
 {'label': 'Windows XP', 'value':'winxp'}
]

现在有了值“mac”,我想获得标签“OSX”。

是否可以通过 JSX 中的这个数组以优雅的方式根据值获取标签?

例如'mac' 应该给 'OSX'

我有 ES6/ReactJS/Underscore/jQuery 可用。

【问题讨论】:

  • 到目前为止你尝试过什么?我们很高兴为您提供帮助,但我们不只是为您编写代码。
  • 使用filter查找value=='mac'所在的项目,然后map返回label键的值。

标签: javascript arrays reactjs ecmascript-6 javascript-objects


【解决方案1】:

使用filter返回一个过滤后的数组,抓取第一个元素(是一个对象),然后抓取label的值。

var label = options.filter(el => el.value === 'mac')[0].label;

DEMO

【讨论】:

  • 比我快 15 秒 :D
【解决方案2】:

你可以使用Array.prototype.find():

let option = options.find(el => el.value === 'mac');
let label = option ? option.label : undefined;

【讨论】:

    【解决方案3】:

    感谢您的快速回复,我为自己的用例做了一些更强大的操作,其中“mac”和选项都不确定。 请注意 == 而不是 ===,因为大多数时候整数与字符串进行比较。

    export function getLabelByValue(value, options) {
      if(value !== '' && value !== null && options.length > 0) {
          return options.filter(el => el.value == value)[0].label
      }
      return ''
    }
    
    let label = getLabelByValue('mac', options)
    

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2015-05-19
      • 2019-10-02
      • 1970-01-01
      相关资源
      最近更新 更多