数组结构如图:
"data": [
{
"workshop_name": "准特公司-冷氢化车间",
"alarmType": "安环",
"groupName": "四班",
"workshop": "10005552",
"groupId": "571254157697280261",
"IIIAlarmCount": 0,
"allCount": 30,
"IIAlarmCount": 14,
"base": "准特公司",
"IAlarmCount": 16
},
{
"workshop_name": "准特公司-冷氢化车间",
"alarmType": "安环",
"groupName": "一班",
"workshop": "10005552",
"groupId": "571253955787680005",
"IIIAlarmCount": 0,
"allCount": 1,
"IIAlarmCount": 1,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "准特公司-冷氢化车间",
"alarmType": "工艺",
"groupName": "二班",
"workshop": "10005552",
"groupId": "571254025643813125",
"IIIAlarmCount": 5,
"allCount": 5,
"IIAlarmCount": 0,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "准特公司-冷氢化车间",
"alarmType": "工艺",
"groupName": "四班",
"workshop": "10005552",
"groupId": "571254157697280261",
"IIIAlarmCount": 4,
"allCount": 4,
"IIAlarmCount": 0,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "准特公司-原料车间",
"alarmType": "工艺",
"groupName": "三班",
"workshop": "10005553",
"groupId": "571258982400977157",
"IIIAlarmCount": 67,
"allCount": 68,
"IIAlarmCount": 1,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "准特公司-原料车间",
"alarmType": "工艺",
"groupName": "一班",
"workshop": "10005553",
"groupId": "571258836783130885",
"IIIAlarmCount": 28,
"allCount": 28,
"IIAlarmCount": 0,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "准特公司-辅助车间",
"alarmType": "工艺",
"groupName": "一班",
"workshop": "10005556",
"groupId": "571252407380666629",
"IIIAlarmCount": 2,
"allCount": 2,
"IIAlarmCount": 0,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "准特公司-还原车间",
"alarmType": "工艺",
"groupName": "五班",
"workshop": "10005554",
"groupId": "571259527790520581",
"IIIAlarmCount": 19,
"allCount": 19,
"IIAlarmCount": 0,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "准特公司-还原车间",
"alarmType": "工艺",
"groupName": "四班",
"workshop": "10005554",
"groupId": "571258581501012229",
"IIIAlarmCount": 1,
"allCount": 1,
"IIAlarmCount": 0,
"base": "准特公司",
"IAlarmCount": 0
},
{
"workshop_name": "全部合计",
"alarmType": "",
"workshop": "",
"IIIAlarmCount": 126,
"allCount": 158,
"IIAlarmCount": 16,
"IAlarmCount": 16,
"base": "全部"
}
]
需求:接口返回的数据workshop_name相同的要去重并把数量相加(allCount、IAlarmCount、IIAlarmCount、IIIAlarmCount)这四个字段要累计求和
思路:这里可以定义俩个空数组,一个用来存储workshop_name,一个存储最终结果,代码如下:
let idArr = []; //相同id放在同一数组中
let resultArr = []; //最终结果数组
// list是后台接口返回的数据(格式是数组对象)
for (let i = 0; i < list.length; i++) {
let index = idArr.indexOf(list[i].workshop); /* indexOf方法:查找数组里有没有对应的字段,返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。 */
if (index > -1) {
//有相同id存在的话,获取index索引位置
resultArr[index].allCount += Number(list[i].allCount); //取相同workshop的allCount累加
resultArr[index].IAlarmCount += Number(list[i].IAlarmCount); //取相同workshop的IAlarmCount累加
resultArr[index].IIAlarmCount += Number(list[i].IIAlarmCount); //取相同workshop的IIAlarmCount累加
resultArr[index].IIIAlarmCount += Number(list[i].IIIAlarmCount); //取相同workshop的IIIAlarmCount累加
} else {
idArr.push(list[i].workshop);/* 存放workshop */
resultArr.push(list[i]);
}
}
最终返回结果