【问题标题】:How to get an object key on a nested object if you know one of its properties values?如果您知道嵌套对象的属性值之一,如何获取嵌套对象的对象键?
【发布时间】:2021-01-26 09:06:08
【问题描述】:

我有一个这样的对象:

const CATEGORY_SLUGS = {
  CATEGORY_1: { ES: "slug1-in-spanish", UK: "slug1-in-english" },
  CATEGORY_2: { ES: "slug2-in-spanish", UK: "slug2-in-english" },
  CATEGORY_3: { ES: "slug3-in-spanish", UK: "slug3-in-english" },
}

在我的代码的其他部分,我有 slug 值,country 也是已知的。

根据这两个信息,了解CATEGORY 的最佳方法是什么?我的意思是,如何找出 slug 指的是哪个类别?

我可以使用let 变量和某种for 循环来逐一检查并查看匹配项。但它看起来不太好,我觉得那里有一个更清洁的解决方案。

【问题讨论】:

    标签: javascript object key


    【解决方案1】:

    您可以使用Object.entriesArray.find

    const CATEGORY_SLUGS = {
      CATEGORY_1: { ES: "slug1-in-spanish", UK: "slug1-in-english" },
      CATEGORY_2: { ES: "slug2-in-spanish", UK: "slug2-in-english" },
      CATEGORY_3: { ES: "slug3-in-spanish", UK: "slug3-in-english" },
    }
    
    const findKey = (country, slug) => {
      const entries = Object.entries(CATEGORY_SLUGS)
      const pair = entries.find(([_, category]) => category[country] === slug)
      return pair ? pair[0] : null
    }
      
    
    // Test case
    console.log(findKey('ES', 'slug1-in-spanish'))
    console.log(findKey('UK', 'slug2-in-english'))
    
    // Error case
    console.log(findKey('ES', 'slug3-in-english'))

    只是一个旁注 - 仅仅因为它看起来更干净并不意味着它更好。可读性比短代码更受欢迎。

    【讨论】:

      猜你喜欢
      • 2014-06-10
      • 2020-02-24
      • 2013-10-11
      • 1970-01-01
      • 2016-10-31
      • 2023-01-12
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多