Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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对象中的每个条目添加唯一id_Javascript_Json - Fatal编程技术网

Javascript 为json对象中的每个条目添加唯一id

Javascript 为json对象中的每个条目添加唯一id,javascript,json,Javascript,Json,我有一个json对象,如下所示: 我希望为每个具有属性title的条目添加一个唯一的id,因此我的json对象如下所示: 在另一个版本中,我想为每个条目添加一个唯一的id,因此看起来如下所示: 我该怎么做 编辑: 这是我的json对象:可以用来循环对象并添加唯一标识符 var iterator = 0; // this is going to be your identifier function addIdentifier(target){ target.id = iterator

我有一个json对象,如下所示:

我希望为每个具有属性
title
的条目添加一个唯一的id,因此我的json对象如下所示:

在另一个版本中,我想为每个条目添加一个唯一的id,因此看起来如下所示:

我该怎么做

编辑: 这是我的json对象:

可以用来循环对象并添加唯一标识符

var iterator = 0; // this is going to be your identifier

function addIdentifier(target){
  target.id = iterator;
  iterator++;
}

function loop(obj){

  for(var i in obj){

    var c = obj[i];        

    if(typeof c === 'object'){

      if(c.length === undefined){

        //c is not an array
        addIdentifier(c);

      }

      loop(c);

    }

  }

}

loop(json); // json is your input object
可以使用在对象上循环并添加唯一标识符

var iterator = 0; // this is going to be your identifier

function addIdentifier(target){
  target.id = iterator;
  iterator++;
}

function loop(obj){

  for(var i in obj){

    var c = obj[i];        

    if(typeof c === 'object'){

      if(c.length === undefined){

        //c is not an array
        addIdentifier(c);

      }

      loop(c);

    }

  }

}

loop(json); // json is your input object

您可以对回调使用闭包
addId
来迭代数组,对嵌套数组使用内部回调
iter

通过调用
addId
,您可以指定要开始的索引

添加的函数(id){ 返回函数iter(o){ if(o中的“标题”){ o、 id=id++; } Object.keys(o).forEach(函数(k){ isArray(o[k])&&o[k].forEach(iter); }); }; } var数据=[{“艺术”:[{“表演艺术”:[{“音乐”:[{“标题”:“伴奏”},{“标题”:“室内乐”},{“标题”:“教堂音乐”},{“指挥”:[{“标题”:“合唱指挥”},{“标题”:“管弦乐队指挥”},{“标题”:“管乐合奏”},{“标题”:“早期音乐”},{“标题”:“爵士乐研究”},{“标题”:“音乐作品”},{“标题”:“音乐教育”},{“标题”:“音乐史”},{“音乐学”},{“标题”:“历史音乐学”},{“标题”:“系统音乐学”},},{“标题”:“民族音乐学”},{“标题”:“音乐理论”},{“管弦研究”},{“器官学”{“标题”:“风琴和历史键盘”},{”标题:“‘钢琴’,{‘标题’:‘弦乐、竖琴、oud和吉他’,{‘标题’:‘歌唱’,{‘标题’:‘弦乐、竖琴、oud和吉他’},{‘标题’:‘录音’},{‘舞蹈’:[{‘标题’:‘舞蹈记谱’,{‘标题’:‘民族学’,{‘标题’:‘舞蹈史’},{‘电视’:{‘标题’:{电视研究{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、}、{}、{}、}、{}、}、{}、}、{}、}、}、{}、}、; 数据.forEach(增补(1)) console.log(数据);
.as console wrapper{max height:100%!important;top:0;}
您可以使用闭包
addId
作为回调函数来迭代数组,并使用内部回调函数
iter
作为嵌套数组

通过调用
addId
,您可以指定要开始的索引

添加的函数(id){ 返回函数iter(o){ if(o中的“标题”){ o、 id=id++; } Object.keys(o).forEach(函数(k){ isArray(o[k])&&o[k].forEach(iter); }); }; } var数据=[{“艺术”:[{“表演艺术”:[{“音乐”:[{“标题”:“伴奏”},{“标题”:“室内乐”},{“标题”:“教堂音乐”},{“指挥”:[{“标题”:“合唱指挥”},{“标题”:“管弦乐队指挥”},{“标题”:“管乐合奏”},{“标题”:“早期音乐”},{“标题”:“爵士乐研究”},{“标题”:音乐作品},{“标题”:“音乐教育”},{“标题”:“音乐史”},{“音乐学”:[{“标题”:“历史音乐学”},{“标题”:“系统音乐学”}]},{“标题”:“民族音乐学”},{“标题”:“音乐理论”},{“标题”:“管弦乐研究”},{“器官学”{“标题”:“风琴和历史键盘”},{”标题:“‘钢琴’,{‘标题’:‘弦乐、竖琴、oud和吉他’,{‘标题’:‘歌唱’,{‘标题’:‘弦乐、竖琴、oud和吉他’},{‘标题’:‘录音’},{‘舞蹈’:[{‘标题’:‘舞蹈记谱’,{‘标题’:‘民族学’,{‘标题’:‘舞蹈史’},{‘电视’:{‘标题’:{电视研究{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、}、{}、{}、}、{}、}、{}、}、{}、}、}、{}、}、; 数据.forEach(增补(1)) console.log(数据);
.as控制台包装{最大高度:100%!重要;顶部:0;}
用于循环对象并添加标识符。请将代码/对象添加为文本,而不是图像。@NinaScholz,请检查我的edit@YukinaSpoonatte,请在此处查看:用于循环对象并添加标识符。请将代码/对象添加为文本,而不是图像。@NinaScholz,请检查我的edit@YukinaSpoonatte,请坐看这里:我通过使用递归并将其拆分为可重用的方法来提升您的解决方案的清洁度。我通过使用递归并将其拆分为可重用的方法来提升您的解决方案的清洁度。