2015-11-20 2 views
1

У меня есть функция jQuery, которая выполняет поиск в моем .json-файле. Однако, поскольку этот файл будет иметь более 100 000 записей, я хочу только вернуть точные соответствия. Может ли кто-нибудь проиллюстрировать, как я изменяю свой текущий код, чтобы выполнить это?Поиск файла JSON только для точного соответствия

$(window).load(function(){ 
    $('#submit').on('click', function(){ 

     var searchField = $('#search').val(); 
     var regex = new RegExp(searchField, "i"); 
     var output = '<div class="row">'; 
     var count = 1; 
     $.getJSON('myjson.json', function(data) { 
      $.each(data, function(key, val){ 
      if ((val.merchantID.search(regex) != -1) || (val.accountName.search(regex) != -1)) { 
       output += '<div class="dataContain">'; 
       output += '<p><span style="font-weight:bold;">Account Name: </span>'+val.accountName + '</p><p><span style="font-weight:bold;">EMV Status: </span><span class="status">' + val.status +'<span class="circle"></span></span></p>'; 
       output += '</div>'; 

       if(count%2 == 0){ 
       output += '</div><div class="row">' 
       } 
       count++; 
      } 
      }); 
      output += '</div>'; 
      //$('#results').toggle(); 
      $('#results').html(output); 

     }); 
     setTimeout(function() { 
     $('span.status:contains("Red")').addClass('red'); 
     $('span.status:contains("Green")').addClass('green'); 
     $('span.status:contains("Yellow")').addClass('yellow'); 
     console.log('this function is running.'); 
     }, 100); 
    }); 

    }); 
+0

Если я правильно вас понять, что это так просто, как: 'если ((val.merchantID == searchField) || (val.accountName == searchField))' –

+0

Спасибо! Я слишком долго смотрел на это. Просто. – shepherdMan1016

ответ

0

Вы можете использовать либо === comparison operator для точного сравнения строк или .indexOf для точного соответствия, если вы ищете матч в строке, хотя, если это вообще возможно, я рекомендовал бы использовать база данных или серверный язык для поиска вашего json. В вашем поиске работает клиентская сторона, которая в зависимости от вашего оборудования и браузера может занять довольно много времени. Если альтернативы нет, не забудьте использовать загрузку .gif или показать прогресс, чтобы ваша страница не выглядела невосприимчивой.

'This is my test string'.indexOf('test'); 
 
//outputs 11 
 

 
'This is my test string'.indexOf('testi') 
 
// outputs -1 
 

 
'This is my test string'.indexOf('TEST') 
 
// outputs -1

+0

Будет использовать PHP для живой версии - это для демонстрации, использующей некоторые статические данные. Я очень ценю ваши отзывы. Спасибо! – shepherdMan1016

+0

@ shepherdMan1016, если вы используете PHP и все еще читаете json-файл, тогда я рекомендую вам декодировать json как массив и использовать функцию array_search, если вам нужен быстрый и простой способ получить соответствие. – kurt

Смежные вопросы