Javascript 为json对象中的每个条目添加唯一id
我有一个json对象,如下所示: 我希望为每个具有属性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
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,请坐看这里:我通过使用递归并将其拆分为可重用的方法来提升您的解决方案的清洁度。我通过使用递归并将其拆分为可重用的方法来提升您的解决方案的清洁度。