gpt4 book ai didi

javascript - 如何从数组形成嵌套的 JSON 对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:24 24 4
gpt4 key购买 nike

我有一个路径(作为一个字符串)像

A/B/C/D

.我想将其表示为一个 JSON 对象,如下所示:

{
A:{
B:{
C:D
}
}
}

现在假设我添加了一条路径

A/B/C/X

那么 JSON 应该是这样的

{
A:{
B:{
C:[D,X]
}
}
}

所以我做的是当我得到路径时,我将它拆分并存储在一个数组中,如下所示

var struct = {};
var path = $scope.path.split("/"); //assuming $scope.path holds the path
for(var i =0;i<path.length-1;i++)
{
struct[path[i]] = path[i+1];
}

但是这会导致 json 为 {A: "B", B: "C", C: "D"}。我该如何解决?有没有递归的方法来做到这一点?

编辑:我以前的模式会导致错误。正如 KevinB 所建议的那样,我正在将架构更新为 [{name: 'A', children: [{name: 'B', children: []}]}]

最佳答案

是的,看看这个为此创建的函数(顺便说一句,我是作者):

https://github.com/DiegoZoracKy/make-object-path

代码是:

    var makeObjectPath = function(_src, _path, _val) {

var src = _src,
path = _path,
val = _val;

if (arguments[0] instanceof Array || typeof(arguments[0]) == 'string') {
src = {};
path = arguments[0];
val = arguments[1] || null;
}

path = (typeof(path) == 'string') ? path.split('.') : path;

var o = src;
var currentO = o;
for (var i in path) {
currentO[path[i]] = (i != path.length - 1) ? currentO[path[i]] || {} : (val) ? val : {};
currentO = currentO[path[i]];
}
return o;
}

并使用它:

makeObjectPath('root.parent.child', 'someValue');

// Output:

{
"root":{
"parent":{
"child":"someValue"
}
}
}

关于javascript - 如何从数组形成嵌套的 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com