Проверка значений в многомерном входном массиве

#javascript #jquery

#javascript #jquery

Вопрос:

Я храню значения в многомерном скрытом входном массиве, который выглядит следующим образом:

 <input type="hidden" name="tokens[0][Search_Type]" value="a" />
<input type="hidden" name="tokens[0][Search_Term]" value="123" />
<input type="hidden" name="tokens[1][Search_Type]" value="b" />
<input type="hidden" name="tokens[1][Search_Term]" value="456" />
  

Как я могу быстро проверить, существует ли token с Search_Term = X и Search_Type = Y? Если есть способ сделать это в одной строке jquery, а не в цикле, это было бы потрясающе.

Ответ №1:

Jquery:

 token_found = $('input[name$=Search_Type]][value=Y]
                  
                 input[name$=Search_Term]][value=X]'
               ).length > 0;
  

Ответ №2:

Вы могли бы сделать это и с помощью селекторов:

 // found
console.log($('input[name$="[Search_Type]"][value="a"]').next('input[name$="[Search_Term]"][value="123"]').length); 

// not found
console.log($('input[name$="[Search_Type]"][value="b"]').next('input[name$="[Search_Term]"][value="123"]').length); 

// found
console.log($('input[name$="[Search_Type]"][value="b"]').next('input[name$="[Search_Term]"][value="456"]').length); 
  

Пример: http://jsfiddle.net/niklasvh/56jLf /

Но является ли это более эффективным, чем при циклировании, я не знаю.

Ответ №3:

Если вы проверяете отправленный массив как объект javascript, вы можете использовать jsonpath для выполнения запросов, подобных xpath, к набору данных.