Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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_Json_Recursion - Fatal编程技术网

Javascript JSON与递归

Javascript JSON与递归,javascript,json,recursion,Javascript,Json,Recursion,对不起,我是个新手,已经有一段时间没有接触递归了,所以如果这个问题看起来有点基本,我很抱歉。基本上我有一个JSON结构,如下所示: { "id": "1111", "name": "Outdoor Skiing", "parent_id": "1110", "parents": [ { "id": "1000000", "name": "Movies" }, { "id": "1000001

对不起,我是个新手,已经有一段时间没有接触递归了,所以如果这个问题看起来有点基本,我很抱歉。基本上我有一个JSON结构,如下所示:

  {
   "id": "1111",
   "name": "Outdoor Skiing",
   "parent_id": "1110",
   "parents": [
     {
        "id": "1000000",
        "name": "Movies"
     },
     {
        "id": "1000001",
        "name": "Outdoor Movies"
     }
   ]
 }
基本上我想在这个结构中翻转它:

{
  "id":"1000000",
  "name":"Movies",
  "children":[
     {
       "id":"1000001",
       "name":"Outdoor Movies",
       "children":[
          {
            "id":"1111",
            "name":"Outdoor Skiing",
            "parent_id":"1110",
            "parents: [....these can stay here....]
          }
       ]
     }
  ]
}

有人能帮我解决这个问题吗?谢谢。

如果您不介意使用下划线,我想这就是您想要的:

var flip = function(theObject, newObject, offset) {
    offset ? offset++ : offset = 1;
    var newObj = _.first(_.last(theObject.parents, offset));
    newObject ? newObj.children = newObject : newObj.children = theObject;
    if (offset < _.size(theObject.parents))
    {
        flip(theObject, newObj, offset);
        return;
    }
    // at this point the 'newObj' variable contains the desired object
};
var flip=函数(对象、新对象、偏移){
偏移量?偏移量++:偏移量=1;
var newObj=u0.first(0.last(theObject.parents,offset));
newObject?newObj.children=newObject:newObj.children=theObject;
if(偏移量<对象父对象的大小))
{
翻转(对象、新对象、偏移);
返回;
}
//此时,“newObj”变量包含所需的对象
};
这里有一个


编辑:由于大众的需求:)这是一个没有下划线的例子。

最初,1000000和1000001是1111的孩子;在翻转版本中,1000000是1000001的父级,1000001是1111的父级。我想你需要解释一下“翻转”是什么意思。你移动的东西没有明显的模式来复制当前的数据结构具有最低级别的类别,其中父数组以递增的顺序保存最低级别类别所属的类别。我认为2d数组就足够了,但它似乎不是。@user1717344:显示您的代码!我想知道你需要下划线做什么。是不是
.first(u.last(theObject.parents,offset))==theObject.parents[offset]
.size(theObject.parents)===theObject.parents.length
?当然!(也就是说,如果您执行了Object.parents[theObject.parents.length-offset])并感谢您添加该选项。你永远不需要下划线。我只是太懒了,当我快速编写代码的时候,我不想没有它。嗯,带下划线的代码看起来短多了(这是不寻常的)