diff --git a/packages/utils/util.ts b/packages/utils/util.ts index 8db56c9afe..36a1ddbbce 100644 --- a/packages/utils/util.ts +++ b/packages/utils/util.ts @@ -49,28 +49,37 @@ export function getPropByPath( v: Nullable } { let tempObj = obj - path = path.replace(/\[(\w+)\]/g, '.$1') - path = path.replace(/^\./, '') + let key, value - const keyArr = path.split('.') - let i = 0 - for (i; i < keyArr.length - 1; i++) { - if (!tempObj && !strict) break - const key = keyArr[i] + if (obj && hasOwn(obj, path)) { + key = path + value = tempObj?.[path] + } else { + path = path.replace(/\[(\w+)\]/g, '.$1') + path = path.replace(/^\./, '') - if (key in tempObj) { - tempObj = tempObj[key] - } else { - if (strict) { - throw new Error('please transfer a valid prop path to form item!') + const keyArr = path.split('.') + let i = 0 + for (i; i < keyArr.length - 1; i++) { + if (!tempObj && !strict) break + const key = keyArr[i] + + if (key in tempObj) { + tempObj = tempObj[key] + } else { + if (strict) { + throw new Error('please transfer a valid prop path to form item!') + } + break } - break } + key = keyArr[i] + value = tempObj?.[keyArr[i]] } return { o: tempObj, - k: keyArr[i], - v: tempObj?.[keyArr[i]], + k: key, + v: value, } }