将填充了布尔值的对象转换为布尔值为True的字符串数组

Log*_*gan 1 javascript typescript

假设我有一个像这样的对象:

likedFoods:{
  pizza:true,
  pasta:false,
  steak:true,
  salad:false
}
Run Code Online (Sandbox Code Playgroud)

我想过滤掉错误,然后将其转换为字符串数组,如下所示:

compiledLikedFoods = ["pizza", "steak"]
Run Code Online (Sandbox Code Playgroud)

做到这一点的最佳方法不只是简单地:

if (this.likedFoods.pizza == true) {this.compiledLikedFoods.push('pizza')};
if (this.likedFoods.pasta == true) {this.compiledLikedFoods.push('pasta')}'
if (this.likedFoods.steak == true) {this.compiledLikedFoods.push('steak')}'
if (this.likedFoods.salad == true) {this.compiledLikedFoods.push('salad')}'
Run Code Online (Sandbox Code Playgroud)

(如果有)

谢谢。

And*_*rey 6

我会按其值过滤对象键

const likedFoods = {
  pizza:true,
  pasta:false,
  steak:true,
  salad:false
};
const compiledFood = Object.keys(likedFoods).filter(key => likedFoods[key] === true);
console.log(compiledFood); //["pizza", "steak"]
Run Code Online (Sandbox Code Playgroud)