如何从嵌套的对象数组中删除对象属性?

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)

上面的代码不起作用,因为它没有映射到主数组内的数组。如何最好地从主数组中所有数组的每个对象中删除这些属性?

You*_*saf 5

为什么不直接返回一个没有要删除的属性的对象,而不是删除呢?

您可以解构要删除的属性,然后使用其余参数语法收集变量中的其他属性。之后,您只需返回包含除要删除的属性之外的所有属性的变量。

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)