【问题标题】:JavaScript: Add new property to array items using .forEachJavaScript:使用 .forEach 向数组项添加新属性
【发布时间】:2021-04-16 21:16:04
【问题描述】:
let foods = [
  { name: 'bread', carbs: 36, protein: 8, fat: 2 },
  { name: 'mayo mustard mix', carbs: 0, protein: 0, fat: 10 },
  { name: 'turkey', carbs: 0, protein: 25, fat: 1 },
  { name: 'cheese', carbs: 0, protein: 5, fat: 7 },
]

我需要通过将碳水化合物、蛋白质和脂肪相乘来计算卡路里,然后将结果相加。

我很坚持这个,我已经开始了

foods.forEach((element, index, array => { })

但不确定从那里去哪里。

【问题讨论】:

  • 主要问题是什么?你有元素,你可能会弄清楚如何计算卡路里,具体问题是什么?如何为对象添加属性?

标签: javascript arrays higher-order-functions


【解决方案1】:

对于每种食物,如果我没记错的话,获取它的三个值并保存计算:),在一个新属性calories

let foods = [ 
  { name: 'bread', carbs: 36, protein: 8, fat: 2 }, 
  { name: 'mayo mustard mix', carbs: 0, protein: 0, fat: 10 }, 
  { name: 'turkey', carbs: 0, protein: 25, fat: 1 }, 
  { name: 'cheese', carbs: 0, protein: 5, fat: 7 }
];

foods.forEach(food => {
  const { carbs = 0, protein = 0, fat = 0 } = food;
  food.calories = carbs * 4 + protein * 4 + fat * 9;
});

console.log(foods);

【讨论】:

    【解决方案2】:
    
    function calculate_calories ( food ) { return something }
    // this function should calculate the calories from input
    // I assume you will do this one yourself
    
    foods.forEach( food => {
      var cal = calculate_calories ( food )
      food.calories = cal
    })
    

    就是这样。我希望它是可以理解的。

    【讨论】:

    • @DaveNewton 我几乎和另一个人同时回答,我们的回答几乎相同,只是他提供了更多细节:)
    猜你喜欢
    • 2011-11-09
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2018-07-24
    • 1970-01-01
    • 2011-11-09
    相关资源
    最近更新 更多