SPART4K
@SPART4K
Middle Front-end Developer (Vue.js/Nuxt.js)

Как мне правильно реализовать поиск в объекте?

У меня имеется объект :
let data = {
	"Абакан": [
		{
			"city": "Абакан",
			"region": "СФО",
			"name_of_1c": "Экспедиция",
			"title": "Экспедиция",
			"address": "655000, Россия, Республика Хакасия, г.Абакан, ул.Советская, д.73",
			"phone": "8 (3902) 22-35-04",
			"coordY": "91.428571",
			"coordX": "53.719143",
			"site": "http://lodka19.ru/",
			"equip": "true",
			"snow_zip": "true",
			"water_zip": "true"
		}
	],
	"Архангельск": [
		{
			"city": "Архангельск",
			"region": "СЗФО",
			"name_of_1c": "UGCOM",
			"title": "Водно-моторный центр «Ю-Джи-Ком»",
			"address": "163000, Россия, Архангельск, Окружное шоссе, 9",
			"phone": "7(8182) 655‒001",
			"coordY": "40.55085",
			"coordX": "64.552312",
			"site": "suzuki29.ru",
			"equip": "false",
			"snow_zip": "false",
			"water_zip": "true"
		}, {
			"city": "Архангельск",
			"region": "СЗФО",
			"name_of_1c": "СЕВЕР СПЕЦ ТЕХ ООО",
			"title": "Магазин «SNOWMARINE»",
			"address": "Архангельск, Октябрят, 23",
			"phone": "7(981)550-18-13",
			"coordY": "40.55085",
			"coordX": "64.552312",
			"site": "snowmarine.ru",
			"equip": "true",
			"snow_zip": "true",
			"water_zip": "true"
		}, {
			"city": "Архангельск",
			"region": "СЗФО",
			"name_of_1c": "УЛОВ (Архангельск)",
			"title": "Магазин «Улов-север»",
			"address": "г.Архангельск ул.Октябрят 25",
			"phone": "7(921)071-57-99",
			"coordY": "40.55085",
			"coordX": "64.552312",
			"site": "ulov-sever.ru",
			"equip": "false",
			"snow_zip": "false",
			"water_zip": "true"
		}
	],
	"Ачинск" : [
		{
			"city": "Ачинск",
			"region": "СФО",
			"name_of_1c": "Extreme Motors",
			"title": "Экстрим-Центр",
			"address": "Красноярский край, г.  Ачинск ул. Дзержинского, 36",
			"phone": "7(3915)16-23-33",
			"coordY": "90.526564",
			"coordX": "56.270146",
			"site": "экстрим-центр.рф"
		}
	]
}

Я хочу реализовать поиск по каждому title , чтобы возвращало к примеру, если я ввожу Экспедиция -
"Абакан": [
		{
			"city": "Абакан",
			"region": "СФО",
			"name_of_1c": "Экспедиция",
			"title": "Экспедиция",
			"address": "655000, Россия, Республика Хакасия, г.Абакан, ул.Советская, д.73",
			"phone": "8 (3902) 22-35-04",
			"coordY": "91.428571",
			"coordX": "53.719143",
			"site": "http://lodka19.ru/",
			"equip": "true",
			"snow_zip": "true",
			"water_zip": "true"
		}
	]

подскажите как лучше реализовать пожалуйста
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Если нужен конкретный объект:

Object.values(data).flat().find(n => n.title === search)

Если надо сохранить исходную структуру, выкинув то, что не подходит (здесь вместо точного соответствия частичное без учёта регистра - так, для разнообразия):

Object.fromEntries(Object
  .entries(data)
  .map(n => [ n[0], n[1].filter(m => m.title.toLowerCase().includes(search.toLowerCase())) ])
  .filter(n => n[1].length)
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы