Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将平面JavaScript对象数组转换为嵌套的分层JSON结构?_Javascript - Fatal编程技术网

如何将平面JavaScript对象数组转换为嵌套的分层JSON结构?

如何将平面JavaScript对象数组转换为嵌套的分层JSON结构?,javascript,Javascript,我需要转换以下平面JavaScript对象数组: [ [ { "name": "child1" }, { "name": "parent1" }, { "name": "grandparent1" } ], [ { "name": "child2" }, { "name": "parent2" }, { "name": "grandparent2" } ] ] 进入以下嵌套的分层JSON结构: { "data": [ { "name": "chi

我需要转换以下平面JavaScript对象数组:

[ [ { "name": "child1" }, { "name": "parent1" }, { "name": "grandparent1" } ], [ { "name": "child2" }, { "name": "parent2" }, { "name": "grandparent2" } ] ]
进入以下嵌套的分层JSON结构:

{
    "data": [
        {
            "name": "child1",
            "parent": {
                "name": "parent1",
                "parent": {
                    "name": "grandparent1",
                    "parent": null
                }
            }
        },
        {
            "name": "child2",
            "parent": {
                "name": "parent2",
                "parent": {
                    "name": "grandparent2",
                    "parent": null
                }
            }
        }
    ]
}
我如何用JavaScript实现这一点?

好的

我想出了以下解决方案,似乎效果不错

var familiesArr = [ [ { "name": "child1" }, { "name": "parent1" }, { "name": "grandparent1" } ], [ { "name": "child2" }, { "name": "parent2" }, { "name": "grandparent2" } ] ];
var hierarchicalFamilies = createHierarchicalFamilies(familiesArr);

function createHierarchicalFamilies(familiesArr) {
    var familyHierarchy = new Array();        
    for (var i=0; i<familiesArr.length; i++) {
        var family = familiesArr[i];
        familyHierarchy.push(addFamilyMember(family.slice()));
    }
    return familyHierarchy;
}

function addFamilyMember(family) {
    if (family.length <= 0) {
        return null;
    }
    var familyMemberNode = family[0];
    var familyMember = new Object();
    familyMember.name = familyMemberNode.name;
    familyMember.parent = addFamilyMember(family.slice(1));
    return familyMember;
}        
var familiesArr=[[{“name”:“child1”},{“name”:“parent1”},{“name”:“祖父母1”}],{“name”:“child2”},{“name”:“parent2”},{“name”:“祖父母2”}];
var hierarchicalFamilies=createHierarchicalFamilies(familiesArr);
函数createHierarchycalFamilies(familiesArr){
var familyHierarchy=新数组();

对于(var i=0;IB,通过编写代码并向我们展示您首先尝试的内容。您可以使用简单的循环和/或数组原型方法(如
reduce
(或其他)轻松实现这一点。如果数组的模式总是相同的,那么并不十分复杂
?请以正确的JSON格式发布输入,就像您对预期输出所做的那样。