mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 16:30:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			772 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			772 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package utils
 | 
						|
 | 
						|
// 数组比较
 | 
						|
// 依次返回,新增值,删除值,以及不变值
 | 
						|
func ArrayCompare(newArr []interface{}, oldArr []interface{}, compareFun func(interface{}, interface{}) bool) ([]interface{}, []interface{}, []interface{}) {
 | 
						|
	var unmodifierValue []interface{}
 | 
						|
	ni, oi := 0, 0
 | 
						|
	for {
 | 
						|
		if ni >= len(newArr) {
 | 
						|
			break
 | 
						|
		}
 | 
						|
		nv := newArr[ni]
 | 
						|
		for {
 | 
						|
			if oi >= len(oldArr) {
 | 
						|
				oi = 0
 | 
						|
				break
 | 
						|
			}
 | 
						|
			ov := oldArr[oi]
 | 
						|
			if compareFun(nv, ov) {
 | 
						|
				unmodifierValue = append(unmodifierValue, nv)
 | 
						|
				// 新数组移除该位置值
 | 
						|
				newArr = append(newArr[:ni], newArr[ni+1:]...)
 | 
						|
				oldArr = append(oldArr[:oi], oldArr[oi+1:]...)
 | 
						|
				ni = ni - 1
 | 
						|
				oi = oi - 1
 | 
						|
			}
 | 
						|
			oi = oi + 1
 | 
						|
		}
 | 
						|
		ni = ni + 1
 | 
						|
	}
 | 
						|
 | 
						|
	return newArr, oldArr, unmodifierValue
 | 
						|
}
 |