Mam więc taką tablicę:

   var watchesArray = [
        {
          model: "FR 10", 
          image:"",
          url: "",
          price: 129.99,
          sports: ["Running", "Fitness"],
          touchScreen:false,
          GPS:false,
          heartRateMonitor:false,
          hrZoneTraining:false,
        },
    ];

    if(watchesArray[0].sports(contains a specific value or values){
      do something
    } else {
       dont do anything
    }

I wszystko, co chcę zrobić, to sprawdzić, czy ten zegarek ma konkretny sport, a jeśli to następnie umieścić w stwierdzeniu, aby mógł coś z tym zrobić.

W jaki sposób mogę to zrobić? Dzięki

1
Rafael Colon 17 sierpień 2014, 16:06

5 odpowiedzi

Najlepsza odpowiedź

Użyj array.indexof jak poniżej

if(watchesArray[0].sports.indexOf('Running') > -1){
    do somwthing
}

Uwaga: - W przypadku, gdyby rodzice nie istnieją, będzie rzucić błąd.

3
Mritunjay 17 sierpień 2014, 12:20

To tylko tablica, nawet jeśli jest "zagnieżdżony":

if (watchesArray[0].sports.indexOf('Running') !== -1) ...

To zwraca 0 Jeśli jest to pierwszy indeks, więc musisz sprawdzić -1 (który jest "nie znaleziono").

Należy pamiętać, że IE7 / 8 nie obsługuje {{x0 }}, ale istnieje sposoby na polyfill, w razie potrzeby.

1
Jared Farrish 17 sierpień 2014, 12:13

Nie ma jednej prostej funkcji, która obsługiwana we wszystkich przeglądarkach, ale możesz napisać następujący kod:

function contains(a, obj) {
    var i = a.length;
    while (i--) {
       if (a[i] === obj) {
           return true;
       }
    }
    return false;
}

Aby uzyskać więcej informacji, szukasz w tej odpowiedzi Jak sprawdzić, czy tablica zawiera obiekt w JavaScript?

0
Community 23 maj 2017, 12:20

Możesz spróbować indeksowania w ten sposób:

var watchesArray = [
                     {
                       model: "FR 10", 
                       image:"",
                       url: "",
                       price: 129.99,
                       sports: ["Running", "Fitness"],
                       touchScreen:false,
                       GPS:false,
                       heartRateMonitor:false,
                       hrZoneTraining:false,
                     },
                 ];

 if (watchesArray[0].sports.indexOf('hello') != -1){
                     alert("exists");
                 } else {
                     alert("this index does not exist");
                 }

Dla tablicy w JavaScript możesz zawsze przemierzać za pomocą określonego klucza. Jeśli klucz nie istnieje indeksu, wróci 0, więc pójdzie na część innego.

0
Suchit kumar 17 sierpień 2014, 12:24

Jak wspomniał Jared, możesz użyć array.indexof ().

Metoda indexof () zwraca pierwszy indeks, w którym dany element można znaleźć w tablicy lub -1, jeśli nie jest obecny.

W twoim przypadku oznaczałoby to

if(watchesArray[0].sports.indexOf(value) !== -1){
  do something
} else {
   dont do anything
}

Dostarczyłem też małą funkcję dopasowania wielu wartości: jsbin

0
Kiren 17 sierpień 2014, 12:41