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

我的目标是从对象中删除数组 [] 和一些属性。我可以通过方法从对象中删除一个属性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;

})


谁能帮我解决这个问题?


凤凰求蛊
浏览 318回答 2
2回答

莫回无

这是 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;})

烙印99

而不是在回调函数中delete使用and 只返回所需的键maplet 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript