2024-11-05 10:09:18 +08:00

23 lines
660 B
TypeScript

import { isKey } from './_isKey'
import { castPath } from './_castPath'
import { toKey } from './_toKey'
import type { PropertyPath } from './_common'
function baseGet(object: any, path: PropertyPath) {
path = isKey(path, object) ? [path] : castPath(path)
let index = 0
const length = path.length
while (object != null && index < length) {
object = object[toKey(path[index++])]
}
return index && index == length ? object : undefined
}
export function get(object: any, path: PropertyPath, defaultValue?: any): any {
const result = object == null ? undefined : baseGet(object, path)
return result === undefined ? defaultValue : result
}