Angular 9如何从一个角度为数组的对象的所有数组中删除一个字段?

问题描述 投票:0回答:1

假设我有以下列表,称为indexesToBeRemoved

indexesTobeRemoved = ['auto_id', 'auto_date']

我想遍历以下数组数组:

allArrays = [
    {
      'auto_id': 123,
      'auto_date': '2019-02-02',
      'name': 'John Doe',
      'address': 'USA'
    },
    {
      'auto_id': 147,
      'auto_date': '2019-03-02',
      'name': 'Peter Doe',
      'address': 'USA'
    },
    {
      'auto_id': 258,
      'auto_date': '2019-04-02',
      'name': 'Hanna Doe',
      'address': 'USA'
    }
  ];

我需要遍历此数组中的每个数组,以删除列表indexesTobeRemoved中存在的字段。因此,数组的数组如下所示:

allArrays = [
    {
      'name': 'John Doe',
      'address': 'USA'
    },
    {
      'name': 'Peter Doe',
      'address': 'USA'
    },
    {
      'name': 'Hanna Doe',
      'address': 'USA'
    }
  ];

我尝试了以下操作:

removeIndexes() {
    this.indexesTobeRemoved.forEach((value) => {
      console.log(value);
      Object.keys(this.allArrays).forEach((key, val) => {
        this.allArrays.splice(value, 1);
        console.log(this.allArrays[key]);
      });
    })

但是在执行时,数组allArray将为空。

这里是stackblitz

javascript arrays angular splice
1个回答
0
投票

您可以使用嵌套的forEach()循环和delete运算符

const allArrays = [ { 'auto_id': 123, 'auto_date': '2019-02-02', 'name': 'John Doe', 'address': 'USA' }, { 'auto_id': 147, 'auto_date': '2019-03-02', 'name': 'Peter Doe', 'address': 'USA' }, { 'auto_id': 258, 'auto_date': '2019-04-02', 'name': 'Hanna Doe', 'address': 'USA' } ];

let keys = ['auto_id', 'auto_date'];
allArrays.forEach(x => {
  keys.forEach(k => delete x[k])
})
console.log(allArrays)
© www.soinside.com 2019 - 2024. All rights reserved.