Я ищу рекурсивный метод javascript. У меня есть эта структура, и я хочу иметь userlist
в каждом разделе ..
let sectionObject=
{
anotherSection1: {
section1:{
userlist:[ {name:"user1", val:1},{name:"user2", val:1}]
},
section2:{
userlist:[ {name:"user1", val:1}]
}
},
anotherSection2: {
section1:{
userlist:[ {name:"user1", val:5},{name:"user2", val:3}]
},
section2:{
userlist:[ {name:"user1", val:6}]
}
}
}
, например, anotherSection
должен иметь userlist
тоже.В этом списке пользователей значения childelements суммируются.anotherSection
имеет два дочерних элемента .. section1
и section2
.. anotherSection.userlist
, следовательно, должно быть:
anotherSection.userlist: [{name: "user1", val: 2}, {name: "user2", val: 1}] (значение user1
дочерних элементов было добавлено вместе) .. sectionObject
тоже должно иметь userlist
. Я ценю любую помощь:)
Это должно быть результатом:
let sectionObject=
{
anotherSection1: {
section1:{
userlist:[ {name:"user1", val:1},{name:"user2", val:1}]
},
section2:{
userlist:[ {name:"user1", val:1}]
},
userlist:[ {name:"user1", val:2},{name:"user2", val:1}]
},
anotherSection2: {
section1:{
userlist:[ {name:"user1", val:5},{name:"user2", val:3}]
},
section2:{
userlist:[ {name:"user1", val:6}]
},
userlist:[ {name:"user1", val:11}, {name:"user2", val:3}]
},
userlist:[ {name:"user1", val:13}, {name:"user2", val:4}]
}
то, что я пробовал, выглядит примерно так ...
function somefunc(obj){
temp = {}
let tempuserliste = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key].userlist.forEach(function(element) {
if (typeof temp[element.name] === 'undefined'){
temp[element.name] = {'name':element.name, 'val':element.val}
tempuserlist.push(temp[element.name])
} else {
temp[element.name].val += element.val
}
});
}
}
return tempuserlist;
}
sectionObject.anotherSection1.usertlist = somefunc(anotherSection1)
somefunc () хорошо работает на одном anothersection
.. но я нене знаю, как объединить это рекурсивным методом ...