可以说我有以下列表,称为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。
答案 0 :(得分:4)
您可以使用嵌套的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)
答案 1 :(得分:2)
请使用forEach
而不是map
。
这是为什么的解释:
您要搜索的是 delete
运算符。 JavaScript delete运算符从对象中删除属性;如果不再保留对同一属性的引用,则该属性最终将自动释放。
this.indexesTobeRemoved.map(key => {
this.allArrays.map(array => delete array[key]);
});