繁体   English   中英

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

[英]How to remove object properties from nested arrays of objects?

我正在尝试从数组中的每个对象中删除这 2 个属性,而它不起作用。 每个对象都在一个数组中。 我的意思是主数组包含对象数组。 有没有一种简单的方法可以在不使用 map() 两次的情况下解决它? 在这种情况下如何返回主要的修改数组?

const modifiedItems = this.items.map(item => {
   delete item.created,
   delete item.removed
   return item
})

数据如下所示:

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},]
];

上面的代码不起作用,因为它没有映射到主数组内的数组。 从位于主数组中的所有数组的每个对象中删除这些属性的最佳方法是什么?

与其删除,不如直接返回一个没有要删除的属性的对象。

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

const modifiedItems = this.items.map(
   ({ created, removed, ...rest }) => rest
);

以下代码片段显示了一个示例:

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

编辑:

在您的情况下, this.items是一个包含嵌套数组的数组。 因此,要从嵌套数组内的对象中删除属性,您还需要映射每个嵌套数组。

以下代码片段显示了一个示例:

 const 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} ] ]; const modifiedItems = items.map(subArr => { return subArr.map(({ created, removed, ...rest }) => rest) }); console.log(modifiedItems);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM