首页  >  文章  >  web前端  >  如何在 JavaScript 中简洁地展平嵌套对象?

如何在 JavaScript 中简洁地展平嵌套对象?

DDD
DDD原创
2024-10-22 13:36:02647浏览

How to Flatten Nested Objects Concisely in JavaScript?

简洁地扁平化嵌套对象

在各种编程场景中经常需要将嵌套对象转换为扁平化结构。为了快速高效的解决方案,您可以使用简洁的单行代码。

将提供的嵌套对象:

{
  a:2,
  b: {
    c:3
  }
}

展平为所需的输出:

{
  a:2,
  c:3
}

采用以下 JavaScript 表达式:

Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))

这种方法背后的核心概念是递归创建一个单属性对象的数组。 Object.keys(o) 方法检索输入对象 o 的所有键。然后检查每个键 k 的对象类型。如果 typeof o[k] === 'object',则函数 _flatten 会递归地应用于嵌套对象。否则,它使用键 k 和值 o[k] 构造一个单属性对象。

[].concat(... 语法将所有这些单属性对象组合到一个数组中。最后, Object.assign({}, ...) 将这些数组合并到所需的扁平输出中。

为了便于阅读,可以将代码重新格式化为以下内容:

Object.assign(
  {},
  ...function _flatten(o) {
    return [].concat(...Object.keys(o)
      .map(k =>
        typeof o[k] === 'object' ?
          _flatten(o[k]) :
          ({[k]: o[k]})
      )
    );
  }(yourObject)
)

这个 - liner 有效地展平嵌套对象,为您的数据转换需求提供简洁高效的解决方案。

以上是如何在 JavaScript 中简洁地展平嵌套对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn