后端返回数组对象的重复项统计
在处理后端返回的数据时,前端常常需要根据某个字段对数据进行去重处理,并统计重复出现的次数。
举个例子,假如后端返回的数组对象中包含一个叫做 “NO” 的字段,我们可以按以下步骤来统计重复数据项:
遍历后端返回的数组对象,将其转化为一个新的数组,其中每个元素是一个对象,包含 “NO” 字段的值和一个初始的计数为 1。对新的数组进行 reduce 操作,将相同的 “NO” 值的元素合并到一个对象中,同时将它们的计数累加。最后,在页面上渲染新数组,其中每个元素都包含原始字段和新增的 “重复次数” 字段。
下面是一个示例代码,展示了如何实现这一过程:
let list = [ { DF:343, Fstep: 0.2, NO:1004 }, { DF:344, Fstep: 0.2, NO:1005 }, { DF:345, Fstep: 0.2, NO:1004 }, { DF:346, Fstep: 0.2, NO:1004 }, { DF:347, Fstep: 0.2, NO:1006 }, { DF:348, Fstep: 0.2, NO:1005 }];let newArr = [], list1 = [], i = 0;let timer = setInterval(() => { if(i === list.length) { clearInterval(timer); return; } // 模拟每3s后端返回一条数据 list1 = [list[i]]; i++; fn(list1);}, 3000);function fn (arr) { newArr = arr.reduce((s, v) => { let index = s.findIndex(it => it.NO === v.NO); index !== -1 ? s[index] = {...v, startTime: s[index].startTime, endTime: getNowDate(), count: ++s[index].count} : s.push({...v, count: 1, startTime: getNowDate(), endTime: getNowDate()}); return s; }, newArr); console.log(newArr);}// 格式化日对象const getNowDate = () => { var date = new Date(); var sign2 = ":"; var year = date.getFullYear() // 年 var month = date.getMonth() + 1; // 月 var day = date.getDate(); // 日 var hour = date.getHours(); // 时 var minutes = date.getMinutes(); // 分 var seconds = date.getSeconds() //秒 var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']; var week = weekArr[date.getDay()]; // 给一位数的数据前面加 “0” if (month >= 1 && month = 0 && day = 0 && hour = 0 && minutes = 0 && seconds <= 9) { seconds = "0" + seconds; } return year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds;};
登录后复制
以上就是如何统计后端返回数组对象中重复项的出现次数?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2806492.html