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