5 回答
TA贡献1951条经验 获得超3个赞
用JSON.stringify,看着还算优雅。
var d=JSON.parse(JSON.stringify(data,function(key,value){
if(key=='created_at'||key=='deleted_at'||key=='updated_at'){
return undefined;
}else{
return value;
}
}))
TA贡献1865条经验 获得超7个赞
要优雅的话,使用 Lodash 的 omit 方法移除不要的属性:
const object = { 'a': 1, 'b': '2', 'c': 3 };
const result = _.omit(object, ['a', 'c']);
// => { 'b': '2' }
或者用 pick 方法只留下需要的属性:
const object = { 'a': 1, 'b': '2', 'c': 3 };
const result = _.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }
当然如果你不想用库或者喜欢动手的话,自己实现一个 omit 也是可以的,实现方法有很多:
// 中规中矩式
const omit = (obj, uselessKeys) =>
Object.keys(obj).reduce((acc, key) =>
return uselessKeys.includes(key) ?
acc :
{...acc, [key]: acc[key]}
}, {});
// 投机取巧式
const omit = (obj, uselessKeys) =>
uselessKeys.reduce((acc, key) => {
return {...acc, [key]: undefined}
}, obj)
// 粗暴式
const omit = (obj, uselessKeys) => {
uselessKeys.forEach(key => {
delete obj[key]
})
return obj
}
最后是特别粗暴的方法:
delete obj.created_at
delete obj.deleted_at
delete obj.updated_at
希望对你有帮助
TA贡献1799条经验 获得超8个赞
JSON.parse( JSON.stringify( data ).replace( /("created_at":".?",)|("deleted_at":".?",)|(,"updated_at":".*?")/g, '' ) )
只针对如图数据,注意updated_at会出现在最后一位。
TA贡献1821条经验 获得超6个赞
graphql了解一下?
补充一下
题主的有嵌套结构的created_at,deleted_at等字段,因此我所知的库都不足以称之为优雅。
当然可以通过正则匹配去删除关键字(如果要删除其他的无用属性呢,会不会存在有些实体需要删除有些不用),或者遍历属性递归删除(效率不高),更有甚者可能是a.created_at需要删除a.b.created_at不需要。
因此我个人认为以schema定义返回结构的方式是最优雅的删除方式。
添加回答
举报
