位置: IT常识 - 正文

js去掉两个数组相同的元素、js删除数组中某一个对象、js快速查找数组中重复项下标(js去掉数组中的空字符串)

编辑:rootadmin
js去掉两个数组相同的元素、js删除数组中某一个对象、js快速查找数组中重复项下标 一、js去掉两个数组相同的元素

推荐整理分享js去掉两个数组相同的元素、js删除数组中某一个对象、js快速查找数组中重复项下标(js去掉数组中的空字符串),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js去掉两个数组的重复值,js去掉两个数组的一个值,js数组删除另一个数组,js数组删除另一个数组,js去除数组,js去掉两个数组的重复值,js去掉两个数组的一个值,js去掉两个数组的一个值,内容如对您有帮助,希望把文章链接给更多的朋友!

注意:这里并非是数组去重,数组去重是去掉一个数组中相同的元素,这里是比较两个数组,过滤掉二者相同的,留下不同的。

通过 some() 在对方数组里面查找相同元素,再利用filter() 过滤掉当前数组里与对方数组相同的元素。

const arr1 = [1, 2, 3, 56]const arr2 = [1, 2, 3, 780]const res = arr2.filter(item1 => !arr1.some(item2 => item2 === item1))console.log(res); // [780]arr2 与 arr1相同的元素有 1,2,3 ,res的结果就是 780const res2 = arr1.filter(item1 => !arr2.some(item2 => item2 === item1))console.log(res2); // [56]如果是数组对象(同上,查找对象 id 属性) let arr1 = [ {id:1,name:'小明',age:18}, {id:2,name:'小红',age:16}, {id:4,name:'小紫',age:22}, {id:5,name:'小绿',age:20}, ] let arr2 =[ {id:2,sex:'女'}, {id:5,sex:'男'}, ]let newArr = arr1.filter((item) => !arr2.some((ele) => ele.id === item.id));

打印结果:

还可利用 includeslet getId = arr2.map(item=>item.id)let newArr2 = arr1.filter(item=>!getId.includes(item.id))js去掉两个数组相同的元素、js删除数组中某一个对象、js快速查找数组中重复项下标(js去掉数组中的空字符串)

打印结果:

二、js删除数组中某一个对象let arr1 = [ {id:1,name:'小明',age:18}, {id:2,name:'小红',age:16}, {id:4,name:'小紫',age:22}, {id:5,name:'小绿',age:20}, ] //假设 去掉name为小明的 这条数据 arr.splice(arr.indexOf(arr.find((e) => { return e.name=== "小明"; })), 1);

参考:https://blog.csdn.net/weixin_43743175/article/details/125257773

三、js快速查找数组中重复项下标var ARR = [1,2,3,4,5,1,2];var rep = [];ARR.forEach((item,index)=>{if(ARR.indexOf(item)!=index){rep.push(ARR.indexOf(item),index)}})

打印结果: 参考:https://blog.csdn.net/smz8023/article/details/86164751

例子:

假如后台返回了个这样的简单数据:

list: [ { totalNum: 1000, touchNum: 300, kpiName: '浏览量', itemStyleColor: ['#4CA4EC', '#B6D9F6'] }, { totalNum: 2000, touchNum: 600, kpiName: '任务领取个数', itemStyleColor: ['#624cec', '#b6bbf6'] } { totalNum: 3232, touchNum: 800, kpiName: '浏览量', itemStyleColor: ['#4CA4EC', '#B6D9F6'] } ]

而前端需要下面这样的数据结构,后端不好处理,让前端处理

list: [ { chartList: [ { totalNum: 1000, touchNum: 300, kpiName: '浏览量', itemStyleColor: ['#4CA4EC', '#B6D9F6'] }, { totalNum: 2000, touchNum: 600, kpiName: '任务领取个数', itemStyleColor: ['#624cec', '#b6bbf6'] } ], groupName: '寿险公司', groupId: 'gruop1' }, { chartList: [{ totalNum: 3232, touchNum: 800, kpiName: '浏览量', itemStyleColor: ['#4CA4EC', '#B6D9F6'] }], groupName: '电商公司', groupId: 'group2' }],

思路:根据某种规律,先拆分数据,采用 总-分-总 的模式,遇到难解决的数据分类拆分-最后合并。

参考实现:

/** * @Description: 机构数据整理 * @param {*Array} list 目标数据 * @return {*Array} 最终数据 */ matchFun(list) { const typeColor1 = ['#624cec', '#b6bbf6'] const typeColor2 = ['#4CA4EC', '#B6D9F6'] let arr1 = [] //转发 let arr2 = [] //浏览 let chartObj let newList = [] list.forEach((item, index) => { if (item.type == 1) { arr1.push(item) } else if (item.type == 2) { arr2.push(item) } }) for (let index = 0; index < arr1.length; index++) { chartObj = { chartList: [] } const element1 = arr1[index] chartObj.groupName = element1.groupName chartObj.groupId = element1.groupId for (let j = 0; j < arr2.length; j++) { const element2 = arr2[j] if (element1.groupId === element2.groupId) { chartObj.chartList[0] = element2 chartObj.chartList[1] = element1 } } newList.push(chartObj) newList.forEach((item) => { item.chartList.forEach((itm) => { itm.itemStyleColor = itm.type == '1' ? typeColor1 : typeColor2 }) }) newList = newList.filter((item) => item.chartList.length > 0) } /处理单个图表数据// let arrSet1 = [] //去重后的单个指标图表 let arrSet2 = [] arrSet1 = arr1.filter((item) => !arr2.some((ele) => ele.groupId == item.groupId)) arrSet2 = arr2.filter((item) => !arr1.some((ele) => ele.groupId == item.groupId)) arrSet1.forEach((item) => { let chartList = [{}] item.chartList = chartList item.chartList[0] = { itemStyleColor: item.type == '1' ? typeColor1 : typeColor2, checkId: item.checkId, groupId: item.groupId, type: item.type, total: item.total, num: item.num } }) arrSet2.forEach((item) => { let chartList = [{}] item.chartList = chartList item.chartList[0] = { itemStyleColor: item.type == '1' ? typeColor1 : typeColor2, checkId: item.checkId, groupId: item.groupId, type: item.type, total: item.total, num: item.num } }) // 最后合并二者 newList = [...newList, ...arrSet1, ...arrSet2] return newList }
本文链接地址:https://www.jiuchutong.com/zhishi/298786.html 转载请保留说明!

上一篇:Openlayers 快速上手教程(openlayers6教程)

下一篇:目标检测--边框回归损失函数SIoU原理详解及代码实现(目标检测标注框的规则)

  • 自来水适用高税率吗
  • 出口不退税进项税如何处理
  • 银行存款属于其他货币资金核算内容吗
  • 个税全员全额扣缴申报指什么
  • 企业亏损法定盈亏是什么
  • 损失补偿原则的限制条件有
  • 预收账款怎样清零
  • 是否退还投标文件
  • 别人送我免费赠品
  • 员工缴纳的工会会费可以税前扣除吗
  • 通讯费企业所得税计算
  • 行政机关作出下列行为属于行政复议的范围
  • 企业出售房屋交什么税
  • 增值税发票系统怎么升级
  • 纳税人必须熟知什么
  • 成本费用调整法
  • 跨区经营的税务政策
  • 挂靠的工程个人所得税怎么交?
  • 税控盘的抵扣怎么填
  • 非居民企业怎么算企业所得税
  • 其他货币资金包括哪些项目
  • 政府的扶持资金是否缴税
  • thinkphp yii
  • PHP:mcrypt_cfb()的用法_Mcrypt函数
  • 加工取得的存货和委托加工的区别
  • 所得税减免与纳税的关系
  • thinkphp5上传图片
  • 购买办公用品没收到发票怎么做账
  • ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
  • php 上传文件
  • 多计提的个人所得税怎么冲回
  • 2023年第十一批专项债
  • 刷题有什么作用
  • vue面试题视频
  • 帝国cms使用手册
  • 帝国最新版本
  • 小规模纳税人无票收入怎么申报
  • 制造费用和生产成本结转
  • 未使用固定资产有哪些
  • 发票第一联需要盖发票专用章吗
  • 一次性取得租赁合同
  • 经营性应收项目的减少调增 为什么是减
  • 公允价值怎么读
  • 跨月的增值税专用发票怎么冲红或者是作废
  • 员工安全培训费可以抵扣增值税吗
  • 自建厂房会计处理
  • 经营租赁的房屋计提折旧吗
  • 购买汽车的工本费如何入账
  • 扣缴个人所得税怎么计算
  • 出现销项负数
  • 机票改签手续费能报销吗
  • 年初资产总额怎么算
  • 坏账准备是什么类科目
  • 国有企业公司制改造 发行企业债券
  • 私营企业固定资产法律制度
  • c3p0连接池提供了哪些方式来配置连接池的参数
  • ipad和iPhone的mac地址区别
  • 如何用u盘装系统 知乎
  • windows自带的碎片整理程序
  • win8.1改语言
  • 如何使用windows 10
  • ubuntu命令行调节音量
  • linux临时修改编码
  • win7系统aero主题变成黑色
  • 铁嘴啥意思
  • android skia opengl
  • 嵌入js
  • 何为黄金茶
  • python的脚本
  • python生成密钥
  • js中split方法的作用
  • shell脚本 -ne 0
  • 每天一篇文章锻炼口才的文章
  • 用jquery写注册界面
  • jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
  • 企业年金企业账户部分可以提取么
  • 税务工会费缴费标准
  • 税务总局2017年11号公告第二条
  • 如何认真贯彻落实中央八项规定,切实改进工作作风
  • 契税纳税申报表在哪里拿
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设