Jquery, проверка, существует ли значение в массиве или нет

javascript jquery arrays loops

208176 просмотра

5 ответа

Я верю, что этот вопрос будет довольно легким для тех, кто играл с java script / jquery.

var arr = new Array();

$.map(arr, function() {
 if (this.id == productID) {
   this.price = productPrice;
 }else {
  arr.push({id: productID, price: productPrice})
 }
}

Я предполагаю, что приведенный выше код объясняет то, что я хочу, очень простым способом. Я бы предположил, что этот $ .map будет работать так, но, к сожалению, я не смог получить результаты с этим.

Какой самый простой и элегантный способ сделать это? Действительно ли я просматриваю весь массив только для того, чтобы узнать, есть ли значение ключа или нет?

У Jquery есть что-то подобное isset($array['key'])?

РЕДАКТИРОВАТЬ

Я пытался использовать inArray, но он продолжает добавлять объект в массив, даже если есть совпадение.

if ( $.inArray(productID, arr) > -1) {
   var number = $.inArray(productID, arr);
   orderInfo[number].price = parseFloat(productPrice);
}else {
   orderInfo.push({id:productID, price:parseFloat(productPrice)});
}
Автор: Revenant Источник Размещён: 12.11.2019 09:08

Ответы (5)


22 плюса

Решение

Если вы хотите сделать это с помощью .map()или просто хотите знать, как это работает, вы можете сделать это следующим образом:

var added=false;
$.map(arr, function(elementOfArray, indexInArray) {
 if (elementOfArray.id == productID) {
   elementOfArray.price = productPrice;
   added = true;
 }
}
if (!added) {
  arr.push({id: productID, price: productPrice})
}

Функция обрабатывает каждый элемент отдельно. .inArray()Предложено в других ответах, вероятно, более эффективный способ сделать это.

Автор: Lycha Размещён: 24.10.2011 07:43

213 плюса

http://api.jquery.com/jQuery.inArray/

if ($.inArray('example', myArray) != -1)
{
  // found it
}
Автор: jbabey Размещён: 24.10.2011 07:39

19 плюса

JQuery имеет inArrayфункцию:

http://api.jquery.com/jQuery.inArray/

Автор: BZink Размещён: 24.10.2011 07:38

15 плюса

    if ($.inArray('yourElement', yourArray) > -1)
    {
        //yourElement in yourArray
        //code here

    }

Ссылка: Jquery Array

Метод $ .inArray () похож на нативный метод JavaScript .indexOf () в том, что он возвращает -1, если не находит соответствия. Если первый элемент в массиве соответствует значению, $ .inArray () возвращает 0.

Автор: Hueston Rido Размещён: 18.11.2014 01:39

7 плюса

Пытаться jQuery.inArray()

Вот ссылка jsfiddle, использующая тот же код: http://jsfiddle.net/yrshaikh/SUKn2/

Метод $ .inArray () похож на нативный метод JavaScript .indexOf () в том, что он возвращает -1, если не находит соответствия. Если первый элемент в массиве соответствует значению, $ .inArray () возвращает 0

Пример кода :

<html>
   <head>
      <style>
         div { color:blue; }
         span { color:red; }
  </style>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
   </head>
   <body>    
      <div>"John" found at <span></span></div>
      <div>4 found at <span></span></div>
      <div>"Karl" not found, so <span></span></div>
      <div>
         "Pete" is in the array, but not at or after index 2, so <span></span>
      </div>
      <script>
         var arr = [ 4, "Pete", 8, "John" ];
         var $spans = $("span");
         $spans.eq(0).text(jQuery.inArray("John", arr));
         $spans.eq(1).text(jQuery.inArray(4, arr));
         $spans.eq(2).text(jQuery.inArray("Karl", arr));
         $spans.eq(3).text(jQuery.inArray("Pete", arr, 2));
      </script>  
   </body>
</html>

Выход:

"Джон" найден в 3
4 найдено в 0
"Карла" не найдено, поэтому -1
«Пит» находится в массиве, но не в индексе 2 или после него, поэтому -1
Автор: Yasser Размещён: 04.02.2013 08:09
Вопросы из категории :
32x32