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
。
原因如下:
您要搜索的是 delete
运算符。 JavaScript 删除运算符从对象中删除 属性;如果不再引用相同的 属性,它最终会自动释放。
this.indexesTobeRemoved.map(key => {
this.allArrays.map(array => delete array[key]);
});
假设我有以下列表,称为 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
。
原因如下:
您要搜索的是 delete
运算符。 JavaScript 删除运算符从对象中删除 属性;如果不再引用相同的 属性,它最终会自动释放。
this.indexesTobeRemoved.map(key => {
this.allArrays.map(array => delete array[key]);
});