从对象中删除项目而不转换数组

Delete Item From Object Without Convert An Array

提问人:Emre 提问时间:9/26/2023 最后编辑:Emre 更新时间:9/28/2023 访问量:54

问:

我想删除或过滤 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

    }

]
JavaScript ReactJS 数组 TypeScript 对象

评论

1赞 Jacob 9/26/2023
根据您的输出,不是类型,但可能是.既然它是一个数组,你应该能够使用 .state.clickedRecordsdTypeArray<dType>.filter
0赞 Emre 9/26/2023
@Jacob 已针对 clickedRecord 详细信息进行了编辑。
0赞 Jacob 9/26/2023
你只需要修复你的类型;显然是一个错误。将其更改为 或clickedRecords?: dType;clickedRecords?: Array<dType>;clickedRecords?: dType[];

答:

1赞 Prawinrajan N 9/28/2023 #1

问题尚不清楚。您已经提到要删除或过滤 insertedRow = 1 的记录。示例数据是一个对象数组。但你把它称为一个对象。

您正在将 .state.clickedRecordsdto

const dto: dType = state.clickedRecords;

根据您的示例,输入将返回对象数组。但是您正在将对象数组分配给对象类型变量。您必须通过以下行更正上面的行。state.clickedRecordsdto

const dto: Arry<dType> = state.clickedRecords;

完成此更改后,您将能够使用 insertedRow = 1 过滤记录,如下所示。

dto.filter((record) => record.insertedRow === 1)