@Almazmr

Как парсить json с вложениями?

Есть json
https://market.dota2.net/api/v2/prices/RUB.json
Парсю его через
marketAPI = JSON.parse

Для текущего name нахожу price
name = 'Anterior of the Abysm';
object = marketAPI.items.find(e => e.market_hash_name === name)
if(object) priceName = object.price
alert(priceName);


Проблема в том, что этот метод поиска ~зависает~ в этом json. Помогите заменить следующие строчки оптимальным методом поиска в моем случае. Без ES-2015 пожалуйста
object = marketAPI.items.find(e => e.market_hash_name === name)
if(object) priceName = object.price
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
kshshe
@kshshe
Frontend developer
Поиск по несортированному массиву потребует перебора всех элементов (O(n)). Лучшее, что тут можно сделать -- проиндексировать этот массив:

// Займет O(n) времени, но только один раз
let indexedItems = {};
marketAPI.items.forEach(item => {
	indexedItems[item.market_hash_name] = item;
});

// Это уже займет O(1)
let name = 'Anterior of the Abysm';
let object = indexedItems[name];

Но это имеет смысл только если у вас получение объекта по значению его поля происходит больше одного раза. Если только один, и это не поменяется, улучшить никак не выйдет, если нельзя поменять выдачу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект