Есть json данные, чтобы отобразить их в jquery плагине генераторе дерева, нужно перевести в формат с указанием id и parent id, причем почти во всех плагинах визуализации json такой формат воспринимается по стандарту.
Есть такой объект данных
{
"product": {
"recommended": {
"article": "blabla",
"description": []
},
"article": [],
"description": [],
"manufacturer": [],
"images": {
"custom": [],
"commercial": []
},
"reviews": []
}
}
На выходе нужно получить
[{
id: 0,
parent: 0,
key: "product"
}, {
id: 1,
parent: 0,
key: "recommended"
}, {
id: 2,
parent: 1,
key: "article",
value: "blabla"
}, ...]
Подходящих библиотек для работы с деревом или функций в сети не нашлось.
var obj = {
objects: {
lol: "kek",
jack: "chebureck"
},
hz: {
obj1: "1",
objM: {
obj2: "2",
obj3: "3"
}
}
};
//^^это тестовый объект
var i = 1,//id первого класса
tree = function(obj, parent) {
var req = [];
for (var key in obj) {//переор по прямым потомкам объекта
var tmp = {
id: i,
parent: parent !== undefined ? parent : 0,//задаёт id родителя(если его нет, то 0, т.к. сам obj тоже счтается, но вы можете и -1 поставить)
key: key
},
c = obj[key].constructor === Object;//так более быстро и надёжно проверять, чем typeof
i++;
if (!c)
tmp.value = obj[key];//если в значении- не объект, то мы просто добавляем в вывод value
req.push(tmp);
if (c)//если объект, то начинается рекурсия, первый аргумент- объект из value, второе- id его родителя(текущего объекта)
tree(obj[key], tmp.id).forEach(function(el) {
req.push(el);
});
}
return req;
}
console.log(tree(obj));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Доброго времени суток, при нажатии на гамбургер открывается главное меню, и подменю, хотя подменю должно открываться при наведении на какой...
Дело такое, при нажатии на гамбургер , он анимирует и открывается меню, тут все нормНо после того как нажал на пустое место(не на меню) , меню...
Есть страница на которой есть несколько пунктов Li, в этих Li пользователи могут оставить (из админки) много текста, текст разбит на абзацыЗадача...
Проблема с плагином для sublime text - sublimeREPL