如果您知道其中一个属性值,如何在嵌套对象上获取对象键?

How to get an object key on a nested object if you know one of its properties values?

我有一个这样的对象:

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 循环来逐一检查并查看匹配项。但它看起来不太好,我觉得那里有更清洁的解决方案。

您可以使用 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'))

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