#javascript #arrays #json #api #object
Вопрос:
Я новичок в программировании на JS и разрабатываю приложение для поиска сайтов по округам (это будет что-то вроде штата) и муниципалитетам (округам).
Из данных, которые я получаю через API, я получаю следующие результаты.
Как вы можете видеть, есть несколько округов, которые повторяются, и то, что меня интересует, — это присвоить округ объекту и внутри этого объекта создать массив с его муниципалитетами.
На данный момент я удалил повторяющиеся округа, но я не могу поместить каждый объект со своими муниципалитетами.
Мой код заключается в следующем: в основном то, что я здесь делаю, — это удаляю повторяющиеся данные из округов.
(переменные данные-это значения из рисунка API 1)
for(let i=0; i< data.length; i )
{
let found = false;
for (var j=0; j<array.length; j ) {
if (data[i].nom_comarca == array[j].comarca) {
municipis.push(data[i].municipi)
found = true;
break;
}
}
if(!found) // If not find we add into Array
{
array.push({
comarca : data[i].nom_comarca,
municipis: municipis
})
//municipis = [];
}
}
Спасибо за все, правда!!
Комментарии:
1. Я бы воспользовался словарем. Ket-это округ, а его значение-массив. Таким образом, вы повторяете свои данные и добавляете округ в словарь, если он не существует. Затем вы добавляете массив в качестве его значения и добавляете municipi. На следующих итерациях, если округ уже есть в вашем словаре, вы просто добавляете в массив municipi.
Ответ №1:
Использование словаря для отслеживания дубликатов nom_comarca. Преобразуйте свойство municipi в массив, если элемент еще не существует, в противном случае переместите значение municipi в массив существующего элемента.
const data = [
{"nom_comarca": "1", "municipi": "1"},
{"nom_comarca": "1", "municipi": "2"},
{"nom_comarca": "2", "municipi": "3"},
];
const result = Object.values(data.reduce((acc, el) => {
if (!acc[el.nom_comarca]) {
acc[el.nom_comarca] = {...el, municipi: [el.municipi]};
} else {
acc[el.nom_comarca].municipi.push(el.municipi);
}
return acc;
}, {}));
console.log(result);
Комментарии:
1. Что? Ты гений, ты решил то, над чем я работал более 3 часов и думал о том, как это сделать. БОЛЬШОЕ ВАМ СПАСИБО!