Я пытаюсь рекурсивно подсчитывать количество «файлов» в объекте JSON.Javascript recursion reset of count
Вот моя функция,
function totalReports(object, count) {
count = count || 0;
var key;
for(key in object) {
if(typeof object[key] == 'object') {
if(object[key].type == 'file') {
count += 1;
console.log(count);
}
console.log("count");
totalReports(object[key], count);
}
}
return count;
}
А вот объект JSON,
jsonArray = {
"parent":{
"url":"parent.html",
"name":"Parent",
"children":[
{
"type":"folder",
"name":"Folder 1",
"url":"folder1.html",
"children":[
{
"type":"file",
"name":"File 1",
"url":"folder1-file1.html",
"children":[
]
},
{
"type":"file",
"name":"File 2",
"url":"folder1-file2.html",
"children":[
]
},
{
"type":"file",
"name":"File 2",
"url":"folder1-file3.html",
"children":[
]
}
]
},
{
"type":"folder",
"name":"Folder 2",
"url":"folder2.html",
"children":[
]
},
{
"type":"folder",
"name":"Folder 3",
"url":"folder3.html",
"children":[
{
"type":"file",
"name":"Folder3 File1",
"url":"folder3-file1",
"children":[
]
},
{
"type":"folder",
"name":"Folder3 Folder1",
"url":"folder3-file1",
"children":[
{
"type":"folder",
"name":"Folder3 Folder1 Folder1",
"url":"folder3-folder1-folder1",
"children":[
{
"type":"file",
"name":"Folder3 Folder1 Folder1 File1",
"url":"folder3-folder1-folder1-file1",
"children":[
]
},
{
"type":"file",
"name":"Folder3 Folder1 Folder1 File2",
"url":"folder3-folder1-folder1-file2",
"children":[
]
}
]
}
]
}
]
}
]
}
};
И это называется console.log(totalReports(jsonArray))
. Он вводит число if в правильное число раз, но оно не удерживает значение, когда оно достигает следующего вспомогательного массива. Ожидаемое значение здесь равно 6, и он вводит в цикл if 6 раз, но не уверен, почему он сбросит значения, когда он выйдет.
Вот скрипку за то же самое, https://jsbin.com/kogoko/edit?js,console,output
Любая помощь будет большим. Заранее спасибо.
'Count = totalReports (объект [ключ], количество);' –
Плюс один, '+ 1'? – JimmyB
@RomanHocke Ах, получил это спасибо :) Вы можете добавить его в качестве ответа. – Stranger