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

Angular 9 How to drop a field from all arrays of an object of arrays in angular?

假设我有以下列表,称为 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.

您可以使用嵌套的 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)

请使用 map 而不是 forEach。 原因如下:

https://gofore.com/en/why-you-should-replace-foreach/

您要搜索的是 delete 运算符。 JavaScript 删除运算符从对象中删除 属性;如果不再引用相同的 属性,它最终会自动释放。

this.indexesTobeRemoved.map(key => {  
  this.allArrays.map(array => delete array[key]);
});