28 lines
520 B
TypeScript
28 lines
520 B
TypeScript
import { assignValue } from './_assignValue'
|
|
|
|
export function copyObject(
|
|
source: any,
|
|
props: any,
|
|
object: any,
|
|
customizer?: any
|
|
) {
|
|
object || (object = {})
|
|
|
|
let index = -1
|
|
const length = props.length
|
|
|
|
while (++index < length) {
|
|
const key = props[index]
|
|
|
|
let newValue = customizer
|
|
? customizer(object[key], source[key], key, object, source)
|
|
: undefined
|
|
|
|
if (newValue === undefined) {
|
|
newValue = source[key]
|
|
}
|
|
assignValue(object, key, newValue)
|
|
}
|
|
return object
|
|
}
|