无需转换为数组,删除Object中insertedRow=1的记录
解决方案
1. 修正类型定义(核心问题)
你的clickedRecords被错误定义为单个dType对象,但mGrid.getSelectedRows()返回的是数组类型。先修正类型:
// 将单个对象类型改为数组类型 clickedRecords?: dType[];
同时,dType中的insertedRow字段并非所有记录都存在(比如你提供的第一条数据没有该字段),建议改为可选属性避免类型报错:
export class dType{ costRef?: string; insertedRow?: number; // 改为可选属性 }
2. 过滤insertedRow=1的记录
修正类型后,直接用数组的filter方法过滤即可,无需额外转换:
// 从state获取数据,默认空数组避免报错 const dto: dType[] = state.clickedRecords || []; // 过滤掉insertedRow等于1的记录 const filteredRecords = dto.filter(record => record.insertedRow !== 1);
关于“转数组时数据全在第0位”的原因
之前你尝试转数组时出现异常,是因为clickedRecords被定义为单个对象,当你执行Array(state.clickedRecords)时,会把实际是数组的state.clickedRecords包装成一个新数组的第一个元素,导致所有数据集中在索引0。修正类型定义后就不会有这个问题。
内容的提问来源于stack exchange,提问作者Emre
相关产品推荐
相关产品推荐

