@Maxla93

Как правильно искать итемы через for с условием if?

Реализовали поиск "нужных вещей" по инвентарю игрока.
  • items[i].market_hash_name - вещи в инвентаре игрока
  • sendItemName - вещи которые ищем в инвентаре

Если вещь найдена, тогда стоп цикла break;

Проблема заключается в следующем:
  • Вещи которые ищем в инвентаре могут быть с одинаковыми названиями.
  • Получается, цикл проходит по списку вещей и как только находит совпадение ставит "true"

Например в инвентаре будет:
1. Name100
2. Name99
3. Name55

Искать будем:
1. Name99
2. Name99
3. Name99

Разумеется напишет, что всё найдены.
Но в инвентаре то есть только 1 вещь Name99, а считает что есть всё.

Как реализовать, чтобы получался такой результат:
1. Найдено
2. Не найдено
3. Не найдено

Сам код:
// Загрузка инвентаря с итемами
offers.loadMyInventory({appId: 730, contextId: 2}, function(err, items) {
var otvet = null;

// g_ItemName - массив с вещами которые будем искать в инвентаре
g_ItemName.forEach(function(sendItemName) {

if (typeof sendItemName != 'undefined') {
    for(var i = 0; i < items.length; i++){
     
if(sendItemName == items[i].market_hash_name){
    console.log('Вещь: ' + sendItemName + ' найдена в инвентаре');
    otvet = true;
    break;
}else{
    console.log('Вещь: ' + sendItemName + ' не найдена в инвентаре');
    otvet = false;
    }
    }
    }
});
  • Вопрос задан
  • 232 просмотра
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Сделайте вложенный цикл. А если строку ищете, то indexOf почему не юзать?
UPD: простите, невнимательно прочел вопрос.
Вот так ищите:
https://jsfiddle.net/3Ljv9d73/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mazahistka16
var count = 0;
for(i = 0 i < items.lengt; i++)
if(sendItemName == items[i].market_hash_name) {
   console.log('Вещь: ' + sendItemName + ' найдена в инвентаре');
   count++;
}

if (count == 0)
   console.log('Вещь: ' + sendItemName + ' не найдена в инвентаре');

Что то типа этого
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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