如何使用map()移除数组对象中的expire、modify属性并保留指定字段?
解决方案
方法一:直接构造目标字段(推荐)
直接在map里生成只包含所需字段的新对象,完全避免引入多余属性:
let objArr = [ { "name" : "Rohan", "request": true}, { "name" : "Sohan", "request": true, "modify" : "today", "expire": "tomorrow"}, { "name" : "Mohan", "request": true, "modify" : "today", "expire": "tomorrow"} ]; const newArr = objArr.map(v => ({ request: v.request, oldName: v.name, newName: v.name + '_copy', newRecord: true })); console.log(newArr);
这种方式最直接高效,不需要处理多余属性,代码逻辑清晰。
方法二:先扩展再删除多余属性
如果原代码需要保留扩展原对象的写法,可以在生成新对象后删除不需要的属性:
let objArr = [ { "name" : "Rohan", "request": true}, { "name" : "Sohan", "request": true, "modify" : "today", "expire": "tomorrow"}, { "name" : "Mohan", "request": true, "modify" : "today", "expire": "tomorrow"} ]; const newArr = objArr.map(v => { const newObj = { ...v, oldName: v.name, newName: v.name + '_copy', newRecord: true }; // 删除不需要的属性 delete newObj.expire; delete newObj.modify; delete newObj.name; // 原name字段也不需要保留 return newObj; }); console.log(newArr);
注意要额外删除原对象里的name字段,因为目标结果中不需要它。
方法三:解构赋值提取所需属性
用对象解构只取出原对象中需要的属性,忽略其他字段:
let objArr = [ { "name" : "Rohan", "request": true}, { "name" : "Sohan", "request": true, "modify" : "today", "expire": "tomorrow"}, { "name" : "Mohan", "request": true, "modify" : "today", "expire": "tomorrow"} ]; const newArr = objArr.map(({ name, request }) => ({ request, oldName: name, newName: name + '_copy', newRecord: true })); console.log(newArr);
解构写法更简洁,同样能从源头避免引入多余属性,和方法一效果一致。
内容的提问来源于stack exchange,提问作者jacob
相关产品推荐
相关产品推荐

