通过字符串键/路径生成嵌套的对象结构嵌套、字符串、路径、对象

由网友(Run away(逃离))分享简介:我想创建一个名为createAssociativeArray的函数,它将接收两个参数:string和object,如下所示:function createAssociativeArray(string, object) {//...}string的最后一项应获取object数据。请参阅使用/返回示例:createAs...

我想创建一个名为createAssociativeArray的函数,它将接收两个参数:stringobject,如下所示:

function createAssociativeArray(string, object) {
  //...
}
string的最后一项应获取object数据。请参阅使用/返回示例:

createAssociativeArray('key1.key2.key3', {
  data1: 1,
  data2: 2,
  data3: 3
});

// key1: {
//   key2: {
//     key3: {
//       data1: 1,
//       data2: 2,
//       data3: 3
//     }
//   }
// }

最简单、最可靠的方法是什么?

Redis 五种对象类型

不能使用评估IS。

我尝试的内容:

function createAssociativeArray(string, object) {
  string = string.split('.');
  return string.reduce(function(_object, _target, i) {
    _object[_target] = (i + 1 === string.length ? object : {});
    return _object;
  }, {});
}

未产生预期结果,因为对象已重置为{}

[JSFiddle]

推荐答案

这是我想出来的:

function createAssociativeArray(string, object) {
  var parts = string.split('.');
  var last = parts[parts.length - 1];
  var tree = {};

  var node = parts.slice(0, -1).reduce(function (memo, current) {
     return (memo[current] = {});
  }, tree);

  node[last] = object;
  return tree;
}
阅读全文

相关推荐

最新文章