diff --git a/web/app/components/workflow/nodes/_base/components/variable/utils.ts b/web/app/components/workflow/nodes/_base/components/variable/utils.ts index 99faf77276..efbd663630 100644 --- a/web/app/components/workflow/nodes/_base/components/variable/utils.ts +++ b/web/app/components/workflow/nodes/_base/components/variable/utils.ts @@ -596,17 +596,16 @@ const getIterationItemType = ({ arrayType = curr.find((v: any) => v.variable === (valueSelector).join('.'))?.type } else { - (valueSelector).slice(1).forEach((key, i) => { + for (let i = 1; i < valueSelector.length - 1; i++) { + const key = valueSelector[i] const isLast = i === valueSelector.length - 2 - curr = curr?.find((v: any) => v.variable === key) - if (isLast) { - arrayType = curr?.type - } - else { - if (curr?.type === VarType.object || curr?.type === VarType.file) - curr = curr.children - } - }) + curr = Array.isArray(curr) ? curr.find(v => v.variable === key) : [] + + if (isLast) + arrayType = curr?.type + else if (curr?.type === VarType.object || curr?.type === VarType.file) + curr = curr.children || [] + } } switch (arrayType as VarType) { @@ -631,7 +630,7 @@ const getLoopItemType = ({ }: { valueSelector: ValueSelector beforeNodesOutputVars: NodeOutPutVar[] - // eslint-disable-next-line sonarjs/no-identical-functions + }): VarType => { const outputVarNodeId = valueSelector[0] const isSystem = isSystemVar(valueSelector)