我想从数组中的对象中删除每个属性,除了其中一些属性:
var listToKeep = ['name', 'school'];
var arrayOfObjects = [{id:'abc',name:'oh', school: 'a', sport: 'a'},
{id:'efg',name:'em', school: 'b', sport: 's'},
{id:'hij',name:'ge', school: 'c', sport: 'n'}]
我正在尝试这样做,但这只是尝试删除一个:
arrayOfObjects .forEach(function(v){ delete v.id});
预期结果是:
var arrayOfObjects = [{name:'oh', school: 'a'},
{name:'em', school: 'b'},
{name:'ge', school: 'c'}]
我不想使用for循环
。
最佳答案
您可以将数组中的每一项映射到新的一项,这是通过减少要保留的键列表来创建的:
const newArray = arrayOfObjects.map(obj => listToKeep.reduce((newObj, key) => {
newObj[key] = obj[key]
return newObj
}, {}))
如果要改变原始对象并删除属性,可以使用两个 forEach 循环和删除运算符:
arrayOfObjects.forEach(obj => listToKeep.forEach((key) => {
delete obj[key]
}, {}))
如果您可以使用lodash或类似的库,您可以选择对象的属性,例如:
const newArray = arrayOfObjects.map(obj => _.pick(obj, listToKeep))
关于javascript 在数组中的对象之间保留某些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50201824/