为了账号安全,请及时绑定邮箱和手机立即绑定

使用 reactjs 提交时无法从对象中删除数组和属性(多个)

使用 reactjs 提交时无法从对象中删除数组和属性(多个)

凤凰求蛊 2023-03-03 09:30:38
我的目标是从对象中删除数组 [] 和一些属性。我可以通过方法从对象中删除一个属性delete,但是当我想删除多个属性时,它会显示如下错误The operand of a 'delete' operator must be optional.Experience数组有一个对象,它可能有多个对象。experience: [    {        organisation: "",        id: "",        from: "",        to: "",        skills: [],        achievements: 0,    },    {        organisationName: "",        id: "",        from: "",        to: "",        skills: [],        achievements: 0,    }]这是代码:let skillsArray = this.state.experiences.map((item) => {  let newItem = { ...item }  delete newItem.skills;  delete newItem.achievements;  return newItem;})谁能帮我解决这个问题?
查看完整描述

2 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

这是 TypeScript 编译器错误,而不是 JavaScript 运行时错误。a 的形状newItem与原始 相同item,并且原始item声音具有必需的skills和achievements属性,因此delete不允许通过删除它们(因为这样现有对象将与输入的形状不匹配)。


出于类似的原因,以下内容也是不允许的:


const obj = {

    foo: 'val1',

    bar: 'val2',

};

delete obj.foo;

(因为 的类型,如果被删除,obj那{ foo: string; bar: string; }将是不正确的)foo


您可以改为解构不需要的属性,并使用 rest 语法来收集新对象的属性:


let skillsArray = this.state.experiences.map((item) => {

  const { skills, achievements, ...newItem } = item;

  return newItem;

})


查看完整回答
反对 回复 2023-03-03
?
烙印99

TA贡献1829条经验 获得超13个赞

而不是在回调函数中delete使用and 只返回所需的键map


let experience = [{

    organisation: "",

    id: "",

    from: "",

    to: "",

    skills: [],

    achievements: 0,

  },

  {

    organisationName: "",

    id: "",

    from: "",

    to: "",

    skills: [],

    achievements: 0,

  }

];


let newExp = experience.map((item) => {

  return {

    organisationName: item.organisationName,

    id: item.id,

    from: item.from,

    to: item.to,

  }

});


console.log(newExp)


查看完整回答
反对 回复 2023-03-03
  • 2 回答
  • 0 关注
  • 316 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信