Код
Возник вопрос. Хочу вывести на яндекс карту точки из коллекции данных вида "категория: название, координаты".
Объект вида
var places = {
shops: {
shop1: {
name: "name 1",
coords: [1, 2]
},
shop2: {
name: "name 2",
coords: [3, 2]
}
},
schools: {
school1: {
name: "school 1",
coords: [1565656, 267676]
},
school2: {
name: "school 2",
coords: [767, 565]
}
}
};
Сперва для перебора использовал подобный код
spoiler
objPassage: function ($obj, $map, $collection) {
var array = Object.values($obj);
for (var obj of array) {
var cath = Object.values(obj);
for (var item of cath) {
var info = Object.values(item),
placemark = _mapMethods.setPlacemark(info[1], info[0]);
$collection.add(placemark);
}
}
$map.geoObjects.add($collection);
}
Потом мне показалось, что три раза писать одно и то же для каждого уровня объекта (не взирая на структуру объекта) не эстетично, как минимум, и я решил использовать рекурсию по уровню.
function eachObj($obj, $lvl = 0) {
var toArray = Object.values($obj);
$lvl--;
for (var item of toArray) {
if ($lvl > 0) {
eachObj(item, $lvl);
} else {
console.log(toArray[0]);
console.log(toArray[1]);
}
}
}
Какой вариант лучше и есть ли более умные решения?