使用枚举作为对象键

19

我有一个枚举:

   const ingredients = {
      BREAD_BOTTOM: 'BreadBottom',
      BREAD_TOP: 'BreadTop',
      MEAT: 'Meat',
      BACON: 'Bacon',
      CHEESE: 'Cheese',
      SALAD: 'Salad'
   };

现在我想使用这个Enum创建一个食材清单,类似于:

    listOfIngredients: {
      ingredients.BREAD_TOP: 1,
      ingredients.BACON: 1,
      ingredients.CHEESE: 2,
      ingredients.MEAT: 2,
      ingredients.BREAD_BOTTOM: 1,
    }

我尝试了一些变化,例如${ingredients.BREAD_TOP},但是我无法让配料列表的键与枚举值相对应。


好吧,它并不是一个真正的“枚举”;它是一个具有字符串值属性的对象。但是你可以使用 [ ] 来提取第二个对象文字中的属性值。 - Pointy
你想要键是什么?枚举的值是什么? - Luca Kiebel
1个回答

43

您可以将键用[]包装起来,在将它们用作键之前评估它们的值。

const listOfIngredients: {
      [ingredients.BREAD_TOP]: 1,
      [ingredients.BACON]: 1,
      [ingredients.CHEESE]: 2,
      [ingredients.MEAT]: 2,
      [ingredients.BREAD_BOTTOM]: 1,
}

要访问一个值,只需执行:

console.log(listOfIngredients[ingredients.BREAD_TOP]);

这是一段代码片段:

let ingredients = {
  BREAD_BOTTOM: 'BreadBottom',
  BREAD_TOP: 'BreadTop',
  MEAT: 'Meat',
  BACON: 'Bacon',
  CHEESE: 'Cheese',
  SALAD: 'Salad'
};

const listOfIngredients= {
      [ingredients.BREAD_TOP]: 1,
      [ingredients.BACON]: 1,
      [ingredients.CHEESE]: 2,
      [ingredients.MEAT]: 2,
      [ingredients.BREAD_BOTTOM]: 1
};

console.log(listOfIngredients[ingredients.BREAD_TOP]);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接