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

我试图在数组不工作时从数组中的每个对象中删除这两个属性。每个对象都在一个数组中。我的意思是主数组包含对象数组。有没有不使用 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},]

];

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


慕侠2389804
浏览 167回答 1
1回答

jeck猫

与其删除,不如返回一个没有要删除的属性的对象。您可以解构要删除的属性,然后使用剩余参数语法将其他属性收集到变量中。在此之后,您只需要返回包含除您要删除的属性之外的所有属性的变量。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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript