я так думаю, что конечно же веб
array.reduceRight((acc, n) => ({ ...n, children: [ ...n.children, acc ] }), { ...obj })
const getById = id => data.filter(s => s.structureId === id)[0] || false;
const getChild = me => data.filter(s => s.parentId === me.structureId)[0] || false;
const getMyParent = me => getById(me.parentId);
const getParentsChain = me => {
const chain = [];
let parent = getMyParent(me);
while(parent) {
chain.unshift(parent);
parent = getMyParent(parent);
}
return chain;
}
const getChildrenChain = me => {
const chain = [];
let child = getChild(me);
while(child) {
chain.push(child);
child = getChild(child);
}
return chain;
}
// test
const me = getById(3);
console.log([...getParentsChain(me), me, ...getChildrenChain(me)]); /*
0: Object { name: "Дирекция юкрк", parentId: null, structureId: 1 }
1: Object { name: "Южно-Курильск", parentId: 1, structureId: 2 }
2: Object { name: "Служба главного инженера", parentId: 2, structureId: 3 }
3: Object { name: "Мехцех", parentId: 3, structureId: 4 } */
С чем вызвано данное явление?
Оптимизация?
Бюджет?
Или банальная лень?
const loadScript = (url) => (
new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = url;
script.onload = () => resolve(script);
script.onerror = () => reject(new Error(`Ошибка загрузки скрипта ${src}`));
document.head.append(script);
})
);
loadScript('../node_modules/jquery/dist/jquery.min.js')
.then(() => {
// Теперь когда jQuery подключен, можно подключить сам Bootstrap.js и svg-pan-zoom
// Можно паралельно грузить, так как они не зависят друг от друга
return Promise.all([
loadScript('../node_modules/bootstrap/dist/js/bootstrap.min.js'),
loadScript('../node_modules/svg-pan-zoom/dist/svg-pan-zoom.min.js')
]);
})
.then(() => {
console.log('Все скрипты загружены');
svgPanZoom('#wsr_map', {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true
});
})