首页 > 其他分享 >好用的方法,数组对象比较并返回差异

好用的方法,数组对象比较并返回差异

时间:2024-08-13 16:29:08浏览次数:14  
标签:返回 afterArr cenMab code let 数组 beforeArr 好用 resObj

/**
 * 方法名:
 * 功能介绍:返回一个对象里面包含后一个数组比第一个数组增加、减少的数据(适用于去重过后的数组)
 * 参数:
 * beforeArr:前一个数组
 * afterArr:后一个数组
 */
const compare = (beforeArr, afterArr) => {
	let resObj = {
		insertList: [],
		deleteList: [],
		updateList: [],
		isChange: false,
	};

	let cenMab = new Map();
	//把beforeArr数组去重放入cenObj 
	for (let i = 0; i < beforeArr.length; i++) {
		cenMab.set(JSON.stringify({
			code: beforeArr[i].code, //比对的关键字段code
		}), beforeArr[i])
	}
	//遍历afterArr,查看其元素是否在cenObj中
	for (let j = 0; j < afterArr.length; j++) {
		let typeOne = JSON.stringify({
			code: afterArr[j].code,
		})
		if (cenMab.has(typeOne)) {
			//比对有变化的字段price
			if (cenMab.get(typeOne).price != afterArr[j].price) {
				resObj.isChange = true;
				resObj.updateList.push(afterArr[j].code);
			}
			let r1 = cenMab.delete(typeOne)
		} else {
			resObj.isChange = true;
			resObj.insertList.push(afterArr[j].code);
		}
	}
	// 遍历push剩余删除的数据
	for (let item of cenMab.values()) {
		resObj.isChange = true;
		resObj.deleteList.push(item.code);
	}
	return resObj
}

  

标签:返回,afterArr,cenMab,code,let,数组,beforeArr,好用,resObj
From: https://www.cnblogs.com/moon-yyl/p/18357215

相关文章

  • Java String常用类、数组、日期时间
    JavaString类一、创建字符串1、简单方式:Stringstr="seventeen";2、用构造函数创建字符串:Stringstr2=newString("seventeen");String创建的字符串存储在公共池中,而new创建的字符串对象在堆上String类是不可改变的,所以一旦创建了String对象,那它的值就无法改变了如果需......
  • Day 2:3107 使数组中位数等于k的最少操作数
    3107使数组中位数等于k的最少操作数1.题目描述2.解题思路3.代码实现1.题目描述3107使数组中位数等于k的最少操作数2.解题思路(1)对nums数组从小到大排序,注意到mid=nums.size()/2位置处的值为中位数;(2)判断中位数与k的大小关系:若中位数大于k,则向左依次......
  • 代码随想录day28 || 122 买卖最佳时机2,55 跳跃游戏,45 跳跃游戏2,1005 k次取反最大数组
    122买卖股票最佳时机2funcmaxProfit(prices[]int)int{ //思路,因为支持同一天买入卖出,所以利润最大应该是所有正利润的加总结果 varsumint fori:=1;i<len(prices);i++{ ifprices[i]-prices[i-1]>0{ sum+=prices[i]-prices[i-1] } } returns......
  • PHP 返回结果给前端/ajax后,在后台继续执行代码的方法
    .问题背景在实际项目开发中,遇到一个问题:前端通过Ajax请求后台PHPAPI接口,执行多文件的打包下载操作,该请求由于需要更新大量的数据(日志、统计等信息)到数据库且还需要执行较大的磁盘IO操作,导致该请求很耗时间。由于前端页面的更新需要快速响应,因此需要PHP快速返回计算结果,然......
  • 利用数组实现约瑟夫环算法
    问题来历:   据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一......
  • 「Day 7—离散化 & 树状数组 & 线段树」
    离散化定义离散化本质是一种哈希,是一种用来处理数据的方法。1.创建原数组的副本。2.将副本中的值从小到大排序。3.将排序好的副本去重。4.查找原数组的每一个元素在副本中的位置,位置即为排名,将其作为离散化后的值。B3694数列离散化代码#include<iostream>#include<algo......
  • 自学linux第十五天:二维数组的指针
    二位字符型数组:chars[][10]={"hello","world","china"};1.定义指针:char(*p)[10]=s;这样定义表示为  p指向二维数组s                 *(*(p+i)+j) 表示二维数组中的s[i][j]元素chars[10]="hello";//存放字符串数据s的......
  • 长度最小的子数组 | LeetCode-209 | 双指针+滑动窗口 | 前缀和+二分查找 | Java详细注
    ......
  • C语言学习心得-二维数组
    (一)二维数组的定义和初始化定义二维数组arr[3][5]:intarr[3][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};仔细看这个数组arr[0] 是第一个一维数组,包含元素 arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][4]arr[1] 是第二个一维数组,包含元素 ......
  • 练习讲解--手动为二维数组的每个元素赋值
    importjava.util.*;publicclassA{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);int[][]nums=newint[3][4];for(inti=0;i<nums.length;i++){for(intj=0;j<nums[i].lengt......