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

问题:
请教各位大牛,如何优雅的删除如下数据结构中的所有created_at,deleted_at,updated_at字段?
图片描述

在node.js网管层想要干掉这些无用的字段

阅读 20.5k
评论
    6 个回答

    要优雅的话,使用 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

    希望对你有帮助

      相似问题
      推荐文章