javascript - 将具有分隔键的对象转换为嵌套对象

标签 javascript node.js

我有一个带分隔键的对象,我想将此对象转换为嵌套对象。有人知道用 javascript 或 node 做的快速方法吗?

例如:

    {
      'login': 'my login',
      'work.title': 'my title',
      'work.phone.mobile': '123',
      'work.phone.work': '456'
    }

转换为

   {
      login: 'my login',
      work: {
        title: 'my title',
        phone: {
          mobile: '123',
          work: '456'
        }
      }
    }

最佳答案

第一个参数是要展开的对象,第二个参数是修改obj还是创建一个新对象。第二个参数是可选的,默认为 false

function unflatten(obj, modify){
    var i, j, keys, ref, result = modify ? obj : {};
    for(i in obj){
        for(keys = i.split('.'), ref = result, j = 0; j < keys.length - 1; j++)
            ref = (ref[keys[j]] = ref[keys[j]] || {});
        ref[keys[j]] = obj[i];
        if(modify && j)
            delete obj[i];
    }
    return result;
}

关于javascript - 将具有分隔键的对象转换为嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18864749/

相关文章:

javascript - 如何在 JavaScript 上运行函数?

javascript - HTML5 <audio> 标签在 Firefox 和 Internet Explorer 上不起作用

javascript - 使用 jsonParse 解析数据

javascript - 如何在 Express.js 中添加 Angular 2 应用程序作为 View

Node.js - Express - 类型错误 : res. json 不是函数

javascript - 向下滚动页面时保留我的导航

node.js - 如何将自定义数据添加到 Mongoose 模式?

javascript - MongoDB 批量插入操作而不是 For 循环

javascript - 如何在 Next.js 中实现 React hook Socketio

javascript - jquery中点击函数的自动调用