javascript - For Loop 项目未添加到购物篮中

标签 javascript vue.js vuejs2

我的 sumUpItems 函数运行良好。但是,我在将商品添加到购物篮时遇到问题。第二个功能不起作用。我做错了什么?

  sumUpItems() {
      let sum = 0;
      for (const item of this.basketItems) {
        sum += Number.parseFloat(item.price);
      }
      return sum;
    },
    basketCount() {
      let count = 0;
      for (let item of this.basketItems) {
        count = ++item;
      }
      return count;
    }
  }

最佳答案

sumUpItems()

您可以使用reduce函数来简化sumUpItems,您可以在数组this.basketItems上调用该函数。

最短的方法是:

sumUpItems() {
  return this.basketItems.reduce((totalPrice, basketItem) => totalPrice + basketItem.price, 0);
}

reduce函数的作用是对数组的每个元素执行一个reducer函数,从而产生单个输出值,在本例中是所有篮子项目的totalPrice。

如果您更喜欢使用括号,您可以这样写:

sumUpItems() {
  return this.basketItems.reduce((totalPrice, basketItem) => {
    return totalPrice + basketItem.price;
  }, 0);
}

或者在 ES5 javascript 中(没有箭头功能):

sumUpItems() {
  return this.basketItems.reduce(function(totalPrice, basketItem) {
    return totalPrice + basketItem.price;
  }, 0);
}

我建议您将 sumUpItems() 函数名称重命名为 getTotalPrice() 或类似名称,它更具体地描述了该函数的作用和返回内容。

篮子计数()

basketCount() 未返回正确数量的商品的原因是变量 count 的增量无效。 let item 保存 this.basketItems 内数组项的对象值,并且您正在尝试将此对象添加到数字中。

你可以直接返回 this.basketItems 的长度:

basketCount() {
  return this.basketItems.length;
}

额外信息

减少函数文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

您可以在数组上调用一些强大的方法。

最常见的是map、filter和reduce方法。当您开始使用时,reduce 方法有点棘手,但在这种情况下它们会很方便。

我建议您在媒体上阅读这篇文章:https://medium.com/poka-techblog/simplify-your-javascript-use-map-reduce-and-filter-bd02c593cc2d或者在谷歌上搜索 map ,过滤和减少JavaScript数组,这会对你有很大帮助;)

关于javascript - For Loop 项目未添加到购物篮中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63891875/

相关文章:

javascript - ng-if/ng-hide 不会在 HTML 页面上实时更新

javascript - 不用递归制作 slider

javascript - 如何在 vue.js 中不使用循环方法将类型数组对象更改为格式化对象?

css - 如何更改 vuejs 食谱中可编辑 Svg 图标系统中图标的颜色?

javascript - 如何在模态中显示v-for中点击元素的vue数据

javascript - 使用 javascript setInterval 会增加 CPU 的内存消耗

javascript - 如何从 JSON 文件中仅获取第一个属性?

javascript - 无法删除 localStorage 数组项

javascript - 从组件访问 Vuex Store 中的 Mutator 会产生未知突变类型错误

vue.js - Vue js v-model 不同的复选框