为了账号安全,请及时绑定邮箱和手机立即绑定

如何优雅的删除对象中的指定属性?

如何优雅的删除对象中的指定属性?

婷婷同学_ 2019-03-07 14:11:29
问题:请教各位大牛,如何优雅的删除如下数据结构中的所有created_at,deleted_at,updated_at字段?在node.js网管层想要干掉这些无用的字段
查看完整描述

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;

    }

  }))


查看完整回答
反对 回复 2019-03-22
?
莫回无

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

希望对你有帮助


查看完整回答
反对 回复 2019-03-22
?
繁星coding

TA贡献1797条经验 获得超4个赞

使用lodash库的pick方法,指定返回的属性


查看完整回答
反对 回复 2019-03-22
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

JSON.parse( JSON.stringify( data ).replace( /("created_at":".?",)|("deleted_at":".?",)|(,"updated_at":".*?")/g, '' ) )

只针对如图数据,注意updated_at会出现在最后一位。


查看完整回答
反对 回复 2019-03-22
?
达令说

TA贡献1821条经验 获得超6个赞

graphql了解一下?

补充一下
题主的有嵌套结构的created_at,deleted_at等字段,因此我所知的库都不足以称之为优雅。
当然可以通过正则匹配去删除关键字(如果要删除其他的无用属性呢,会不会存在有些实体需要删除有些不用),或者遍历属性递归删除(效率不高),更有甚者可能是a.created_at需要删除a.b.created_at不需要。
因此我个人认为以schema定义返回结构的方式是最优雅的删除方式。


查看完整回答
反对 回复 2019-03-22
  • 5 回答
  • 0 关注
  • 2374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号