【问题标题】:How to match a string with values in a object array? [duplicate]如何将字符串与对象数组中的值匹配? [复制]
【发布时间】:2021-07-01 16:36:49
【问题描述】:

我有一个对象数组

array = [{"key": "English", "value": "en-ca"}, 
{"key": "French", "value": "fr-ca"}];

我正在使用以下方法检测浏览器语言:

var brwsrlang = window.navigator.language;

我需要将获取的浏览器语言(brwsrlang)与我的数组中的值进行匹配,并返回匹配的字符串“en-ca”

例如: 如果我的浏览器语言是“en-ca”,它应该返回 true 或 false。 我尝试了以下方法。但是,我想让它与数组值一起使用。

const x = brwsrlang.match( /[a-z]|-/g).join('');

这给了我以下结果。

Output x=:
"en-ca"

但是,我不想将它与所有字母匹配。我只想让它从给定的数组中检查。我想用我的数组值替换正则表达式。

【问题讨论】:

  • 为什么对象是{ key: 'English', value: 'en-ca' }而不是{ "english": "en-ca" }
  • const inArray = array.some(language=> language.value.toLowerCase() === brwsrlang.toLowerCase());

标签: javascript arrays


【解决方案1】:

我会把数组变成一个对象,例如变成

{
  'en-ca': 'English',
  'fr-ca': 'French',
}

理想情况下,提前执行一次 - 例如,将您的源代码重组为这种结构的对象。

然后只需使用括号符号来查找对象上的语言。

const languagesObj = Object.fromEntries(
  array.map(
    ({ key, value }) => [value, key]
  )
);
const thisLanguage = languagesObj[window.navigator.language];

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2018-11-05
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多