Из массива с объектами вернуть уникальные, посчитать сколько раз они повторились и записать в новый массив с объектами
есть массив с объектами:
const arr = [
{
"city": "Апатиты",
"address": "sdfsfsfsfsdfs",
"name": "fdsfsfsdfs",
"position": "fsdfsdfsd",
"phone": "32434242342",
"problem": "vvzxvxcvcxvx",
"prioritet": "Не срочно",
"date": "2022.02.00 20:16:44",
"id": 1
},
{
"city": "Апатиты",
"address": "dfssdfsf",
"name": "vcxvxv",
"position": "fesfsefsef",
"phone": "3242424",
"problem": "dsfvcdsvdsv",
"prioritet": "Не срочно",
"date": "2022.02.00 20:17:01",
"id": 2
},
{
"city": "Апатиты",
"address": "fgdgdgdg",
"name": "gfdgdg",
"position": "gdfgdfg",
"phone": "4554353",
"problem": "fvxvxv",
"prioritet": "Не срочно",
"date": "2022.02.00 20:17:20",
"id": 3
},
{
"city": "Апатиты",
"address": "fgdgdgdg",
"name": "gfdgdg",
"position": "gdfgdfg",
"phone": "4554353",
"problem": "fvxvxv",
"prioritet": "Не срочно",
"date": "2022.02.00 20:17:23",
"id": 4
},
{
"city": "Кола",
"address": "czzxczc",
"name": "232323",
"position": "cxzccz",
"phone": "czczczx",
"problem": "23232",
"prioritet": "Не срочно",
"date": "2022.02.00 20:17:44",
"id": 5
}]
Надо вернуть из него только объекты с уникальным значением city и посчитать сколько раз значения повторялись, чтобы получилось вот так:
const newArr = [
{
city: Апатиты,
count: 3
},
{
city: Кола,
count: 1
}
]
Ответы (2 шт):
Автор решения: HaZcker
→ Ссылка
function getData() {
const result = []
arr.forEach((el) => {
const newItem = {
city: el.city
}
const existItem = result.find(item => newItem.city === item.city)
if(!existItem) {
newItem.count = 1
result.push(newItem)
} else {
const itemIndex = result.indexOf(existItem)
result[itemIndex].count +=1
}
})
return result
}
Советую изучить методы массивов
Автор решения: EzioMercer
→ Ссылка
Вот вам простой, понятный и очень быстрый метод как решить эту проблему (вводные данные упрощены из-за ненадоберсти других св-в в алогритме):
const citiesInfo = [
{"city": "Апатиты"},
{"city": "Апатиты"},
{"city": "Апатиты"},
{"city": "Апатиты"},
{"city": "Спрайт"},
{"city": "Спрайт"},
{"city": "Спрайт"},
{"city": "Пепси"},
{"city": "Пепси"},
{"city": "Кола"}
]
const tempData = {}
for (const cityInfo of citiesInfo) {
if (tempData.hasOwnProperty(cityInfo.city)) ++tempData[cityInfo.city];
else tempData[cityInfo.city] = 1;
}
const resultArr = [];
for (const key in tempData) {
resultArr.push({
city: key,
count: tempData[key]
});
}
console.log(resultArr);