обращение к json по имени поля
есть такой json объект :
[
{
"id": 0,
"title": "Название 1"
},
{
"id": 1,
"title": "Название 2"
}
]
сейчас обращение происходит так : импортирую файл
import Items from '/items.json';
и дальше получаю первый элемент так:
Items[0].title
есть какой то способ в js обращаться по имени поля чтобы писать не Items[0] , а Items['Название 1']
Ответы (1 шт):
Автор решения: EzioMercer
→ Ссылка
Можно так например:
items.find(el => el.title === 'Название 1')const items = [{ "id": 0, "title": "Название 1" }, { "id": 1, "title": "Название 2" } ] const getItemByName = (arr, name) => arr.find(el => el.title === name); console.log(getItemByName(items, 'Название 1')); console.log(getItemByName(items, 'Название 2')); console.log(getItemByName(items, 'Название 3'));Если не хотите вызывать функцию вручную каждый раз, то можно с помощью Proxy так:
const items = [{ "id": 0, "title": "Название 1" }, { "id": 1, "title": "Название 2" } ] const itemsByName = new Proxy(items, { get(target, prop) { return target.find(el => el.title === prop); } }); console.log(itemsByName['Название 1']); console.log(itemsByName['Название 2']); console.log(itemsByName['Название 3']);Чтобы не терять время на поиски каждый раз, можно заранее подготовить нужную структуру
const items = [{ "id": 0, "title": "Название 1" }, { "id": 1, "title": "Название 2" } ] const itemsByName = {}; for (const item of items) itemsByName[item.title] = item; console.log(itemsByName['Название 1']); console.log(itemsByName['Название 2']); console.log(itemsByName['Название 3']);