如何从传播运算符中删除属性?

新手上路,请多包涵

我想从响应中删除 drugName 但不知道如何从传播运算符中删除属性?主程序

  const transformedResponse = transformResponse(response);
  const loggerResponse = {...transformedResponse};
  delete loggerResponse[drugName];
  console.log("LOGGER>>>>", loggerResponse);
  logger().info('Drug Price Response=', { ...loggerResponse, memberId: memberId, pharmacyId: pharmacyId });

\ 数据

LOGGER>>>> {
    '0': {
        isBrand: false,
        drugName: 'test drug',
        drugStrength: '5 mg 1 5 mg',
        drugForm: 'Tablet',
    }
}

转换响应

[{
    drugName: 'HYDROCODONE-HOMATROPINE MBR',
    drugStrength: '5MG-1.5MG',
    drugForm: 'TABLET',
    brand: false
}]

原文由 hussain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 180
2 个回答

您可以 在对象解构中使用 Rest 语法 来获取除 drugName 之外的所有属性到 rest 变量,如下所示:

 const transformedResponse = [{
    drugName: 'HYDROCODONE-HOMATROPINE MBR',
    drugStrength: '5MG-1.5MG',
    drugForm: 'TABLET',
    brand: false
},
{
    drugName: 'HYDROCODONE ABC',
    drugStrength: '10MG',
    drugForm: 'SYRUP',
    brand: true
}]

const output = transformedResponse.map(({ drugName, ...rest }) => rest)

console.log(output)

此外,当您在 {} 中展开一个数组时,您会得到一个对象,该对象以数组的索引作为键,以数组的值作为值。这就是为什么你得到一个对象 0 作为 loggerResponse 的关键:

 const array = [{ id: 1 }, { id: 2 }]
console.log({ ...array })

原文由 adiga 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 ES9 Object Rest Operator 的 1 行解决方案

 const loggerResponse = {
  "0": {
    isBrand: false,
    drugName: "test drug",
    drugStrength: "5 mg 1 5 mg",
    drugForm: "Tablet",
  },
};
const { drugName, ...newResponse } = loggerResponse["0"];
console.log(newResponse);

原文由 Dhruvil21_04 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题