javascript - 将点拆分为单独的对象javascript

标签 javascript lodash

我有一个这样的对象:

var data = {"prop.health": 1, "prop.cost":1, "prop.time":1}

我想把它改成这样的对象:

{
  "prop": {
    "health": 1, 
    "cost":1, 
    "time":1
  }
}

这是我的代码:

  _.each(data, function (value, key) {
    var split = key.split('.')
    if (split.length > 1) {
      data[split[0]] = data[split[0]] || {}
      data[split[0]][split[1]] = value
      delete data[key]
    }
  })

但这只适用于 1 层嵌套。您将如何编写它以确保它适用于您需要的深度嵌套属性?

最佳答案

您可以使用 _.transform 的组合和 _.set , 例如

data = _.transform(data, function(transformed, val, key) {
    _.set(transformed, key, val);
});

结果

{"prop":{"health":1,"cost":1,"time":1}}

关于javascript - 将点拆分为单独的对象javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662665/

相关文章:

javascript - 如何在JS中添加和删除类?

javascript - 如何保留dos文本文件编码

javascript - Lodash 在 react 中对数据进行排序

javascript - 使用 Lodash 节流不起作用

javascript - 洛达什。如何过滤对象中的对象?

javascript - 对嵌套对象使用 Lodash countBy

javascript - 在 PhantomJS 中设置元素高度

javascript - 在 ubuntu 中使用 Flask 将 .js 包含在 .html 中时出现引用错误

javascript - Jasmine Angular 单元测试 'Cannot read ' 未定义的属性

javascript - 在数组中查找重复对象并标记这些 [Javascript lodash]