0 javascript arrays javascript-objects ecmascript-5 ecmascript-6
我试图在数组不起作用时从数组中的每个对象中删除这两个属性。每个对象都位于一个数组内。我的意思是主数组包含对象数组。有没有一种简单的方法可以解决这个问题,而无需使用map()两次?在这种情况下如何返回主修改数组?
const modifiedItems = this.items.map(item => {
delete item.created,
delete item.removed
return item
})
Run Code Online (Sandbox Code Playgroud)
数据如下:
this.items = [
[{ removed: 1, created: 1, a:2, b: 2, c: 3}]
[{ removed: 1, created: 1, a:2, b: 2, c: 3}, { removed: 1, created: 1, a:2, b: 2, c: 3},]
];
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,因为它没有映射到主数组内的数组。如何最好地从主数组中所有数组的每个对象中删除这些属性?
为什么不直接返回一个没有要删除的属性的对象,而不是删除呢?
您可以解构要删除的属性,然后使用其余参数语法收集变量中的其他属性。之后,您只需返回包含除要删除的属性之外的所有属性的变量。
const modifiedItems = this.items.map(
({ created, removed, ...rest }) => rest
);
Run Code Online (Sandbox Code Playgroud)
以下代码片段显示了一个示例:
const modifiedItems = this.items.map(
({ created, removed, ...rest }) => rest
);
Run Code Online (Sandbox Code Playgroud)
在您的情况下,this.items是一个包含嵌套数组的数组。因此,要从嵌套数组内的对象中删除属性,您还需要映射每个嵌套数组。
以下代码片段显示了一个示例:
const arr = [
{ removed: 1, created: 1, a:2, b: 2, c: 3},
{ removed: 1, created: 1, a:2, b: 2, c: 3},
{ removed: 1, created: 1, a:2, b: 2, c: 3},
];
const modifiedItems = arr.map(
({ created, removed, ...rest }) => rest
);
console.log(modifiedItems);Run Code Online (Sandbox Code Playgroud)