javascript 在数组中的对象之间保留某些属性

标签 javascript arrays object ecmascript-6

我想从数组中的对象中删除每个属性,除了其中一些属性:

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/

相关文章:

javascript - 如何在控制台中列出我的机器人所在的所有 Discord 服务器 ID? |不和谐.js

javascript - 从下拉列表一中选择,根据下拉列表一中的值删除选择选项

javascript - 从对象中选取给定属性的值到数组中

java - 将字符串分配给字符串数组

python - Duck 类,它为每个鸭子对象创建随机初始化的数字

javascript - 对象作为对象属性名称?

javascript - 如何将 websocket 推送定时器嵌入到网页中?

javascript - 通过使用 Javascript 删除类来触发 CSS 转换

java - 当所有数据结构都具有有效值时,数组列表和三个数组的客户适配器不会填充 ListView

c - 函数无法在 c 中正确打印