碎片时间学编程「90]:使用键路径展平对象


碎片时间学编程「90]:使用键路径展平对象

操作步骤:

  • 使用递归。
  • Object.keys()结合使用将Array.prototype.reduce()每个叶节点转换为扁平路径节点。
  • 如果键的值是一个对象,则该函数使用适当的方法调用自身以prefix使用Object.assign().
  • 否则,它将适当的前缀键值对添加到累加器对象。
  • 您应该始终省略第二个参数 prefix,除非您希望每个键都有一个前缀。

JavaScript

const flattenObject = (obj, prefix = '') =>
  Object.keys(obj).reduce((acc, k) => {
    const pre = prefix.length ? `${prefix}.` : '';
    if (
      typeof obj[k] === 'object' &&
      obj[k] !== null &&
      Object.keys(obj[k]).length > 0
    )
      Object.assign(acc, flattenObject(obj[k], pre + k));
    else acc[pre + k] = obj[k];
    return acc;
  }, {});

示例:

flattenObject({ a: { b: { c: 1 } }, d: 1 }); // { 'a.b.c': 1, d: 1 }

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

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章