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

Javascript 使用reactjs提交时无法从对象中删除数组和属性(多个),javascript,Javascript,我的目标是从对象中删除数组[]和一些属性。我可以通过delete方法从对象中删除一个属性,但当我要删除多个属性时,它会显示错误,如“delete”运算符的操作数必须是可选的。 体验数组有一个对象,它可能有多个对象 experience: [ { organisation: "", id: "", from: "", to: "",

我的目标是从对象中删除数组[]和一些属性。我可以通过
delete
方法从对象中删除一个属性,但当我要删除多个属性时,它会显示错误,如
“delete”运算符的操作数必须是可选的。

体验
数组有一个对象,它可能有多个对象

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


有人能帮我查询吗?

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

let experience=[{
组织:“,
id:“”,
从:“,
至:“,
技能:[],
成绩:0,
},
{
组织名称:“,
id:“”,
从:“,
至:“,
技能:[],
成绩:0,
}
];
让newExp=experience.map((项目)=>{
返回{
组织名称:item.OrganizationName,
id:item.id,
from:item.from,
致:第项至,
}
});

log(newExp)
这是TypeScript编译器错误,不是JavaScript运行时错误。
新项目
的形状与原始的
项目
相同,并且原始的
项目
听起来具有所需的
技能
成就
属性,因此不允许通过
删除
删除它们(因为现有对象与键入的形状不匹配)

出于类似原因,以下情况也不允许:

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