Я хочу добавить уникальный id
в каждый суб-комментарий, комментарий может иметь более 100, я получил этот объект в качестве ввода, и мне нужно добавить автоинкремент и вставить в базу данных, любая помощь будет оценена.
Я хочу обновить этот object
var objData = {"comments":{
"commentedBy" : "jaril1",
"date" : "",
"comment" : "Hello world",
"subComments" : {
"commentedBy" : "jaril 2",
"date" : "",
"comment" : "Hello world inside dark",
"subComments" :{
"commentedBy": "jaril 3",
"date": "",
"comment": "wow working great"
}
}
}
}
К этому:
var objData = {"comments":{
"commentId":1,
"commentedBy" : "jaril1",
"date" : "",
"comment" : "Hello world",
"subComments" : {
"commentId":2,
"commentedBy" : "jaril 2",
"date" : "",
"comment" : "Hello world inside dark",
"subComments" :{
"commentId":3,
"commentedBy": "jaril 3",
"date": "",
"comment": "wow working great"
}
}
}
}
var objData = {"comments":{"commentedBy":"jaril1","date":"","comment":"Hello world","subComments":{"commentedBy":"jaril 2","date":"","comment":"Hello world inside dark","subComments":{"commentedBy":"jaril 3","date":"","comment":"wow working great"}}}}
var id=1
function updateComment(commenObj){
return commenObj.subComments ? {...commenObj, commentId: id++, subComments: updateComment(commenObj.subComments)} : {...commenObj, commentId: id++}
}
console.log(updateComment(objData.comments))
var objData = {"comments":{
"commentedBy" : "jaril1",
"date" : "",
"comment" : "Hello world",
"subComments" : {
"commentedBy" : "jaril 2",
"date" : "",
"comment" : "Hello world inside dark",
"subComments" :{
"commentedBy": "jaril 3",
"date": "",
"comment": "wow working great"
}
}
} };
var Id = 1;
objData.commentId = Id;
function addCommentId(comments) {
if (comments.subComments) {
comments.subComments.commentId = Id++;
addCommentId(comments.subComments);
}
return comments;
}
var data = addCommentId(objData);
console.log(data);
const objData = {"comments":{
"commentedBy" : "jaril1",
"date" : "",
"comment" : "Hello world",
"subComments" : {
"commentedBy" : "jaril 2",
"date" : "",
"comment" : "Hello world inside dark",
"subComments" :{
"commentedBy": "jaril 3",
"date": "",
"comment": "wow working great"
}
}
}
}
let id = 1;
function addId(obj) {
obj.commentId = id++;
if (obj.subComments) {
addId(obj.subComments);
}
}
addId(objData.comments);
console.log(objData);
Это добавит commentId к каждому комментарию, независимо от того, сколько подкомпонентов есть.
Если для приращения нет дополнительных требований, вы можете сделать это с рекурсией, так как ваша структура данных рекурсивна.
Вы определяете рекурсивную функцию, такую как withId_
которая принимает объект и идентификатор, увеличивает идентификатор и затем вызывает себя в subComments
если он существует:
const objData ={"comments":{
"commentedBy" : "jaril1",
"date" : "",
"comment" : "Hello world",
"subComments" : {
"commentedBy" : "jaril 2",
"date" : "",
"comment" : "Hello world inside dark",
"subComments" :{
"commentedBy": "jaril 3",
"date": "",
"comment": "wow working great"
}
}
}
}
const withId_ = ({ commentedBy, date, comment, subComments }, id) => {
if (typeof subComments === 'undefined') {
return { commentId: id + 1, commentedBy, date, comment };
} else {
let incrementedId = id + 1;
return { commentId: incrementedId, commentedBy, date, comment, subComments: withId_(subComments, incrementedId) };
}
};
const withId = (objectData) => withId_(objectData.comments, 0);
console.log(withId(objData));
ВЫХОД:
{
"commentId": 1,
"commentedBy": "jaril1",
"date": "",
"comment": "Hello world",
"subComments": {
"commentId": 2,
"commentedBy": "jaril 2",
"date": "",
"comment": "Hello world inside dark",
"subComments": {
"commentId": 3,
"commentedBy": "jaril 3",
"date": "",
"comment": "wow working great"
}
}
}