提问人:Emre 提问时间:9/26/2023 最后编辑:Emre 更新时间:9/28/2023 访问量:54
从对象中删除项目而不转换数组
Delete Item From Object Without Convert An Array
问:
我想删除或过滤 insertedRow = 1 的记录。但由于它不是数组,filter 或 forEach 不起作用。当我想将其转换为数组时,它将它们都放在第 0 个索引中。如果可能的话,我想在不将其转换为数组的情况下执行此操作。你能帮我吗?
d类型:
export class dType{
costRef?: string;
insertedRow: number;
}
clickedRecords 的定义和填充函数:
clickedRecords?: dType;
async function mGrid_RowClick (): Promise<void> {
return new Promise<void>(async (resolve, reject) => {
try {
const selectedRows = mGrid.current!.getSelectedRows();
state.clickedRecords= selectedRows;
resolve();
} catch (ex) {
reject(ex);
}
});
}
DTO 来自状态:
const dto: dType = state.clickedRecords;
DTO:
[
{
"costRef": "ivr_98",
},
{
"insertedRow": 1
},
{
"insertedRow": 1
}
]
答:
1赞
Prawinrajan N
9/28/2023
#1
问题尚不清楚。您已经提到要删除或过滤 insertedRow = 1 的记录。示例数据是一个对象数组。但你把它称为一个对象。
您正在将 .state.clickedRecords
dto
const dto: dType = state.clickedRecords;
根据您的示例,输入将返回对象数组。但是您正在将对象数组分配给对象类型变量。您必须通过以下行更正上面的行。state.clickedRecords
dto
const dto: Arry<dType> = state.clickedRecords;
完成此更改后,您将能够使用 insertedRow = 1 过滤记录,如下所示。
dto.filter((record) => record.insertedRow === 1)
评论
state.clickedRecords
dType
Array<dType>
.filter
clickedRecords?: dType;
clickedRecords?: Array<dType>;
clickedRecords?: dType[];