如何解决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
中表示 OR
和 acc[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 举报,一经查实,本站将立刻删除。