JavaScript:如何使用 reduce 计算值

如何解决JavaScript:如何使用 reduce 计算值

我有以下 JSON 数据并试图计算每年的总价:

const data = [
  { year: 2020,price: 400 },{ year: 2019,price: 20 },{ year: 2020,price: 100 },price: 80 },]

我编写了以下代码来计算价格,但结果不正确。

const price = data.reduce((acc,current) => {

  if(!acc[current.year]) {
    acc[current.year] =  current.price;
  }

  acc[current.year] += current.price;

  return acc;

},{});

我该如何修复代码以及我的问题是什么?

另外,下面的意思一样吗?我不明白 (acc[item.color] || 0) 部分的语法。

const test1 = data.reduce((acc,item) => {
  acc[item.color] = (acc[item.color] || 0) + 1;
  return acc;
},{});
const test2 = data.reduce((acc,item) => {

  if(!acc[item.color]) {
    acc[item.color] = 0;
  }

  acc[item.color] = acc[item.color] + 1;
  return acc;
},{});

解决方法

您在 reduce 上使用 clothes 而不是 data

您只需要添加else,其他一切都很完美。如果 current.price 不存在,则添加 acc[current.year]

const data = [
  { year: 2020,price: 400 },{ year: 2019,price: 20 },{ year: 2020,price: 100 },price: 80 },];

const price = data.reduce((acc,current) => {
  if (!acc[current.year]) {
    acc[current.year] = current.price;
  } else acc[current.year] += current.price;

  return acc;
},{});

console.log(price);

,

您代码中的问题是,当您还没有键 current.price 时,您将 acc[current.year] 的值添加了两次。

const data = [
  { year: 2020,]

const price = data.reduce((acc,current) => {

  if(!acc[current.year]) {
    acc[current.year] =  0;
  }

  acc[current.year] += current.price;

  return acc;

},{});

另外,下面的意思一样吗?我不明白 (acc[item.color] || 0) 部分的语法。

在此 acc[item.color] || 0 中表示 ORacc[item.color] 之间的 0。当 acc[item.color] 的值不为 null 或 undefined 时,acc[item.color] || 0 的结果将是 acc[item.color] 的值。

否则,如果 acc[item.color] 的值未定义或为空,null || 0 将返回 0。

因此,acc[item.color] = (acc[item.color] || 0) + 1 这意味着将 acc[item.color] 的值设置为 acc[item.color],如果它被另外定义设置为 0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?