20 lines
561 B
TypeScript
20 lines
561 B
TypeScript
import merge from "deepmerge"
|
|
|
|
export function arrayMerge(
|
|
target: any[],
|
|
source: any[],
|
|
options: merge.ArrayMergeOptions
|
|
) {
|
|
const destination = target.slice()
|
|
source.forEach((item, index) => {
|
|
if (typeof destination[index] === "undefined") {
|
|
destination[index] = options.cloneUnlessOtherwiseSpecified(item, options)
|
|
} else if (options?.isMergeableObject(item)) {
|
|
destination[index] = merge(target[index], item, options)
|
|
} else if (target.indexOf(item) === -1) {
|
|
destination.push(item)
|
|
}
|
|
})
|
|
return destination
|
|
}
|