//let arr = тот ужасный массив
let result = getParentIds(arr);
result = getNormalStruct(arr);
console.log(result)
document.write(out(result));
function getParentIds(arr){//Добавить parentId
arr.forEach(e=>{
if(e.path.length == 9)
e.parentId = null;
else
e.parentId = e.path.substr(0,e.path.length -9);
});
return arr;
}
function getNormalStruct(arr,parent = null){//Сделать нормальную структуру с children
let res = arr.filter(e=>e.parentId == parent);
res.forEach(e=> e.children = getNormalStruct(arr,e.path));
return res;
}
function out(arr,del = "-"){//Пример вывода по нормальной структуре
let s = "";
arr.forEach(e=>s+= del+ e.commentText+"<br>"+out(e.children,del+del));
return s;
}
-Это родитель
--Это первый потомок
----Это третий потомок
--Это второй потомок
----Это четвертый потомок
let n = 10;
nextPrime:
for (let i = 2; i <= n; i++) { // Для всех i...
for (let j = 2; j < i; j++) { // проверить, делится ли число..
console.log(`${i} % ${j} = ${i%j}`);
if (i % j == 0) continue nextPrime; // не подходит, берём следующее
}
console.log( "prime "+i ); // простое число
}
[
{
"commentText": "Это родитель",
"pageID": 1,
"userID": 1,
"date": "2021-12-25 14:00:00",
"dateModified": "2021-12-25 14:00:00",
"isDelete": "False",
"isPrivate": "False",
"attachment": [],
"children":[
{
"commentText": "Это первый потомок",
"pageID": 1,
"userID": 2,
"date": "2021-12-25 14:10:00",
"path": "000000001000000002",
"dateModified": "2021-12-25 14:10:00",
"isDelete": "False",
"isPrivate": "False",
"attachment": [],
"children":[
{
"commentText": "Это второй потомок",
"pageID": 1,
"userID": 3,
"date": "2021-12-25 14:15:00",
"path": "000000001000000003",
"dateModified": "2021-12-25 14:15:00",
"isDelete": "False",
"isPrivate": "False",
"attachment": [],
"children":[]
}
]
}
]
}
]
i % 2
происходит неявное преобразование к булеву типа поидее. А в JS 0 == false, а все остальные числа true.Тоесть к примеру если if(1 % 2) то это условие верно потому-что 1%2 = 1 а 1 это true,
А условие if(1 %2 == 0) это условие не верно, потомучто 1 %2 = 1, а 1 не равно 0.
Ну можешь сам явно преобразовать любое значение в bool и посмотреть типа
alert(new Boolean(1%2));
В js фолсом считается 0, пустая строка '', null и другие крч поищи в инете
Falsy
P.S. Вообще в js много всяких странных вещей, про которые если не знать, то можно налажать что потом хрен найдешь причину. Поэтому лучше программировать на более низкоуравневых языках, там уже и строгая типизация и чуть что-то не так напишешь сразу ошибка ломающая всё.