碎片时间学编程「75]:深度理解map映射对象键

创建一个与提供的对象具有相同值的对象,以及通过为每个键运行提供的函数生成的键。

用Object.keys()迭代对象的键。

用Array.prototype.reduce()创建具有相同值和映射键的新对象fn。

JavaScript

const deepMapKeys = (obj, fn) =>

  Array.isArray(obj)

    ? obj.map(val => deepMapKeys(val, fn))

    : typeof obj === 'object'

    ? Object.keys(obj).reduce((acc, current) => {

        const key = fn(current);

        const val = obj[current];

        acc[key] =

          val !== null && typeof val === 'object' ? deepMapKeys(val, fn) : val;

        return acc;

      }, {})

    : obj;

示例代码

constobj={foo:'1',nested:{child:{withArray:[

        {grandChild:['hello']

        }

      ]

    }

  }

};constupperKeysObj=deepMapKeys(obj,key=>key.toUpperCase());/*

{

  "FOO":"1",

  "NESTED":{

    "CHILD":{

      "WITHARRAY":[

        {

          "GRANDCHILD":[ 'hello' ]

        }

      ]

    }

  }

}

*/

更多内容请访问我的网站:https://www.icoderoad.com

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容