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
5 odpowiedzi
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.
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.
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?
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.
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