mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-06 05:59:25 +08:00
* feat: add getValuesByPath * fix(FilterFormBlock): fix association field can not to filter * test: hasMany filter test * fix: remove null in filter * fix: fix not responding for filter button * fix: fix oho and o2m and obo * fix: fix isInFilterFormBlock * fix: fix errors * fix: should filter out when params is empty --------- Co-authored-by: chareice <chareice@live.com>
33 lines
806 B
TypeScript
33 lines
806 B
TypeScript
export const getValuesByPath = (obj: object, path: string, defaultValue?: any) => {
|
|
if (!obj) {
|
|
return defaultValue;
|
|
}
|
|
const keys = path.split('.');
|
|
let result: any[] = [];
|
|
let currentValue = obj;
|
|
|
|
for (let i = 0; i < keys.length; i++) {
|
|
const key = keys[i];
|
|
|
|
if (Array.isArray(currentValue)) {
|
|
for (let j = 0; j < currentValue.length; j++) {
|
|
const value = getValuesByPath(currentValue[j], keys.slice(i).join('.'), defaultValue);
|
|
result = result.concat(value);
|
|
}
|
|
break;
|
|
}
|
|
|
|
currentValue = currentValue[key] === undefined ? defaultValue : currentValue[key];
|
|
|
|
if (currentValue == null) {
|
|
break;
|
|
}
|
|
|
|
if (i === keys.length - 1) {
|
|
result.push(currentValue);
|
|
}
|
|
}
|
|
|
|
return result.length === 1 ? result[0] : result;
|
|
};
|