fix: 修复拼接两列数据键名脱节导致的假成功
- SpliceColData/DoJoint 实现读取的键(col1/cola)与 catalog 必填字段 (col_name_1/col_name_2/col_num_1/col_num_2)完全脱节,填了参数也按 undefined 找列,拼接出空值仍报成功 - 改读 catalog 真实键名,按 change_type 支持列名/列号两种模式,兼容旧键
This commit is contained in:
parent
e59034d700
commit
b19f9aa9ba
@ -90,9 +90,21 @@ register(["Bivartable_ColumnOperationDf", "Bivartable_DoCal"], (_ctx, _node, arg
|
||||
const result: Table = [[...headers, name]]; for (const row of source.slice(1)) result.push([...row, calculate(row[left], row[right], operator)]); return result;
|
||||
});
|
||||
|
||||
function columnIndexOf(candidate: unknown): number {
|
||||
const text = String(candidate ?? "").trim();
|
||||
if (/^\d+$/.test(text)) return Number(text) - 1;
|
||||
let result = 0;
|
||||
for (const char of text.toUpperCase()) result = result * 26 + (char.charCodeAt(0) - 64);
|
||||
return result - 1;
|
||||
}
|
||||
|
||||
register(["Bivartable_SpliceColData", "Bivartable_DoJoint"], (_ctx, _node, args) => {
|
||||
const source = table(args.df); if (!source.length) return source; const headers = source[0];
|
||||
const left = index(headers, args.col1 ?? args.cola); const right = index(headers, args.col2 ?? args.colb); const name = String(args.name ?? args.colnew ?? "拼接结果"); const separator = String(args.separator ?? "");
|
||||
// catalog 字段:change_type(name/num) + col_name_1/2 或 col_num_1/2;兼容旧键 col1/col2
|
||||
const byName = String(args.change_type ?? "name") !== "num";
|
||||
const left = byName ? index(headers, args.col_name_1 ?? args.col1 ?? args.cola) : columnIndexOf(args.col_num_1);
|
||||
const right = byName ? index(headers, args.col_name_2 ?? args.col2 ?? args.colb) : columnIndexOf(args.col_num_2);
|
||||
const name = String(args.new_col_name ?? args.name ?? args.colnew ?? "拼接结果"); const separator = String(args.connector ?? args.separator ?? "");
|
||||
return [[...headers, name], ...source.slice(1).map((row) => [...row, `${row[left] ?? ""}${separator}${row[right] ?? ""}`])];
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user