javascript - 查找列表组的金额总和
问题描述
我是 Reactjs 的新手。
我有以下数据
Name Amount
Poorna 11000.00
Kumar 2900.00
Ashok 20000.00
Kumar 3020.00
Poorna 15000.00
输出应如下所示
Name Amount
Poorna 26000.00
Kumar 5920.00
Ashok 20000.00
请帮我。
解决方案
这是您可以根据名称对数据进行分组的方式:
let data = [
{name: "Poorna", salary:11000.0},
{name: "Kumar",salary: 2900.0},
{name: "Ashok", salary:20000.0},
{name: "Kumar", salary:3020.0},
{name: "Poorna", salary:15000.0},
];
let sol = {};
for (let a of data) {
if (sol[a.name]) {
sol[a.name] += a.salary;
} else {
sol[a.name] = a.salary;
}
}
console.log(sol);
这是完整的反应应用程序:
import React, { useState, useEffect } from "react";
import "./style.css";
let data = [
{ name: "Poorna", salary: 11000.0 },
{ name: "Kumar", salary: 2900.0 },
{ name: "Ashok", salary: 20000.0 },
{ name: "Kumar", salary: 3020.0 },
{ name: "Poorna", salary: 15000.0 }
];
export default function App() {
const [initialData, setInitialData] = useState(data);
const [group, setGroup] = useState([]);
const groupData = () => {
let sol = {};
for (let a of initialData) {
if (sol[a.name]) {
sol[a.name] += a.salary;
} else {
sol[a.name] = a.salary;
}
}
setGroup(sol);
};
useEffect(() => {
groupData();
}, []);
return (
<div>
<table>
<tr>
{" "}
<th>Name</th>
<th>Amount</th>
</tr>
{initialData.map(d => (
<tr>
{" "}
<td>{d.name}</td>
<td>{d.salary}</td>
</tr>
))}
</table>
<h2>Grouped data</h2>
<table>
<tr>
<th>Name</th>
<th>Amount</th>
</tr>
{group &&
Object.keys(group).map(key => (
<tr>
<td>{key}</td>
<td>{group[key]}</td>
</tr>
))}
</table>
</div>
);
}
你可以在这里找到工作应用程序:Stackblitz Link
推荐阅读
- java - 如何多次使用按钮?
- css - 在 mobil 中将表格方向更改为垂直模式
- android - 颤振 - 如何为文本的一部分着色(即在句子中间)
- python - 如何制作一个python程序来解密没有密钥的凯撒密码?(频率分析)
- android - 使用 MediaCodec 和 GLSurfaceView 浏览视频
- c - 使用 C 编程语言从 Arduino 串口检索数据时出错
- php - 在codeigniter中注销后有什么方法可以禁用浏览器后退按钮
- sql-server - 在 SQL 中生成连续月份
- oracle - 如果我要求所有 PL/SQL 包都没有 EXIT 语句,会有什么影响?
- vba - 具有选定形状的 vba 宏 powerpoint