【问题标题】:Add the contents of an array together [duplicate]将数组的内容加在一起[重复]
【发布时间】:2021-06-04 08:04:25
【问题描述】:

我想获取菜单中每种食物的大小,然后将所有食物的大小相加,然后在控制台中显示菜单的总大小。请帮忙。我的代码不起作用。

想要的结果 => 总大小:225

let menu = [
    { id: 1, name: "Soda", price: 3.12, size: "4oz", type: "Drink" },
    { id: 2, name: "Beer", price: 6.50, size: "8oz", type: "Drink" },
    { id: 3, name: "Margarita", price: 12.99, size: "12oz", type: "Drink" },
    { id: 4, name: "Pizza", price: 25.10, size: "60oz", type: "Food" },
    { id: 5, name: "Kebab", price: 31.48, size: "42oz", type: "Food" },
    { id: 6, name: "Berger", price: 23.83, size: "99oz", type: "Food" },
];

const totalSize = () => {
    const b = parseFloat(menu.size);
    const result = b.forEach(itemA, itemB => itemA + itemB);
    console.log(`total  size : ${result}`)
}
totalSize();

【问题讨论】:

  • 你想要reduce,而不是forEach
  • 他们怎么加起来是225??

标签: javascript arrays


【解决方案1】:

let menu = [
    { id: 1, name: 'Soda', price: 3.12, size: '4oz', type: 'Drink' },
    { id: 2, name: 'Beer', price: 6.5, size: '8oz', type: 'Drink' },
    { id: 3, name: 'Margarita', price: 12.99, size: '12oz', type: 'Drink' },
    { id: 4, name: 'Pizza', price: 25.1, size: '60oz', type: 'Food' },
    { id: 5, name: 'Kebab', price: 31.48, size: '42oz', type: 'Food' },
    { id: 6, name: 'Berger', price: 23.83, size: '99oz', type: 'Food' }
];

const totalSize = () => {
    let result = menu.reduce((acc, item) => {
        acc += Number(item.size.slice(0, -2));

        return acc;
    }, 0);
    console.log(`total  size : ${result}`);
};
totalSize();

【讨论】:

    【解决方案2】:

    您可以使用Array.prototype.reduce

    let menu = [
        { id: 1, name: "Soda", price: 3.12, size: "4oz", type: "Drink" },
        { id: 2, name: "Beer", price: 6.50, size: "8oz", type: "Drink" },
        { id: 3, name: "Margarita", price: 12.99, size: "12oz", type: "Drink" },
        { id: 4, name: "Pizza", price: 25.10, size: "60oz", type: "Food" },
        { id: 5, name: "Kebab", price: 31.48, size: "42oz", type: "Food" },
        { id: 6, name: "Berger", price: 23.83, size: "99oz", type: "Food" },
    ];
    
    const totalSize = () => {
        const result = menu.reduce((sum, item) => sum + parseFloat(item.size), 0);
        console.log(`total  size : ${result}`)
    }
    totalSize();

    【讨论】:

      【解决方案3】:

      menu 是一个数组,它没有size 属性。您需要访问每个元素的size 属性。

      你需要使用reduce来组合元素之间的操作,而不是forEach

      当一个箭头函数有多个参数时,它们必须用括号括起来。

      let menu = [
          { id: 1, name: "Soda", price: 3.12, size: "4oz", type: "Drink" },
          { id: 2, name: "Beer", price: 6.50, size: "8oz", type: "Drink" },
          { id: 3, name: "Margarita", price: 12.99, size: "12oz", type: "Drink" },
          { id: 4, name: "Pizza", price: 25.10, size: "60oz", type: "Food" },
          { id: 5, name: "Kebab", price: 31.48, size: "42oz", type: "Food" },
          { id: 6, name: "Berger", price: 23.83, size: "99oz", type: "Food" },
      ];
      
      const totalSize = () => {
          const result = menu.map(item => parseFloat(item.size)).reduce((total, item) => total + item);
          console.log(`total  size : ${result}`)
      }
      totalSize();

      【讨论】:

        猜你喜欢
        • 2015-06-01
        • 1970-01-01
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 2021-03-08
        • 2012-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多