位置: 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原理详解及代码实现(目标检测标注框的规则)

  • 销项税减去进项税
  • 纳税人与负税人一致的是
  • 个人所得税申报退税多久到账
  • 处置废品收入需要开票吗东奥
  • 所得税交多了怎么办
  • 刚成立的公司好不好
  • 金税盘如何查看开票机号
  • 取得高新技术企业证书
  • 直线法计提折旧的公式预计净残值
  • 车辆买的商业险有家庭包
  • 公司向个人借入资金的风险
  • 图书出版费开票怎么开
  • 企业职工福利费扣除标准
  • 管理费用销售费用
  • 公司注销后款未收完怎么办
  • 坏账损失的账务处理办法
  • 研发费用领用材料
  • 小规模纳税人免税额度是多少
  • 汽车进项税额
  • 打方向咯噔一声已解决
  • 企业预交的宽带费能退吗
  • 政府发放奖励金如何入账
  • 公司收到个人入股股金,然后又投资其他公司怎么做账
  • 事业单位专项款不能购买资产吗
  • linux下4种kill某个用户所有进程的方法
  • 应收账款保理的主要意图在于
  • yolov3与yolov2
  • php that
  • 在途物资运费会计科目怎么写
  • 违反发票管理规定2次公告内容
  • 大沼泽地国家公园位于哪个城市
  • react keepalive
  • 一般纳税人企业所得税如何计算
  • 侧边导航栏点击后再展开
  • 以前年度收入如何调账
  • 什么是银行对账,进行银行对账分为几步
  • SqlServer如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息
  • 自查补税怎么做账
  • 财务负责人需要工商登记吗
  • 未能确认收入的原因
  • Centos安装ntfs-3g
  • 内账会计成本是什么意思
  • 现金流量表现金净增加额负数
  • 认缴的出资额
  • 一般纳税人之外还有什么
  • 税盘连接服务器失败
  • 成本核算的意义与作用
  • 专项资金会计和税务处理差异
  • 房屋租赁印花税计税金额含税吗
  • 可供出售金融资产名词解释
  • 核定征收的一般纳税人进项税额抵扣
  • 企业支付宝收款码是进公账吗
  • 未收到发票暂估分录
  • 基本电费包含电量吗
  • 发票保管应由谁保管
  • 未达起征点的收入怎么入账
  • 对外投资信息忘记填了
  • sql语句实例大全
  • windowsxp电脑开机
  • xp系统连接共享文件夹
  • 判断自己的脸型
  • linux oracle 12505
  • centos6挂载ntfs硬盘
  • 要使用windows
  • windows alt r
  • 对js关键字命名的优点
  • unity账号登录
  • javascript要怎么学
  • 用python写爬虫
  • javascript tab切换
  • jquery设置定时器
  • 多个javascript 合并
  • python 异常处理方法
  • 广东地税电话客服电话
  • 留抵税额如何抵扣
  • 哪些润滑油属于危险品类
  • 税务部门政务公开
  • 公积金扣800一个月多少钱
  • 青岛国税服务电话
  • 委托人全权代理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设