Jak sprawdzić, czy tablica zawiera obiekt?

Rozpoczęty przez nevil
Cbc17b5571031b1a1812ac88d9fa68cb?s=128&d=mm

nevil

W jaki sposób mogę sprawdzić czy tablica zawiera dany obiekt. Na razie korzystałem z następującego kodu, jednak szukam jakiegoś lepszego sposobu.

function containsObj(tab, obj) {
for (var i = 0; i < tab.length; i++) {
if (tab[i] === obj) {
return true;
}
}
return false;
}

4052b78b684471a19d3dca1d3e752db8?s=128&d=mm

wilq

https://codequack.com/forum/javascript/jak-sprawdzic-czy-tablica-zawiera-obiekt

Aktualnie implementacje JavaScript posiadają metodę indexOf, która zwraca indeks pod którym znajduje się szukany element. Gdy nie zostanie on znaleziony, to metoda zwróci -1.

var a = [2, 9, 9];
a.indexOf(2); // 0
a.indexOf(7); // -1
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

Kolejny sposób polega na użyciu metody includes, która robi dokładnie to, czego oczekujesz.

var a = [1, 2, 3];
a.includes(2); // true
a.includes(4); // false
Problem polega na tym, że starsze wersje popularnych przeglądarek nie wspierają tej metody.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Browser_compatibility

Jeśli korzystasz z jQuery, to możesz użyć metody inArray: http://api.jquery.com/jquery.inarray/

Dość popularna biblioteka Underscore.js zawiera metodę contains, która robił dokładnie to, czego potrzebujesz: http://underscorejs.org/#contains

Zaloguj się, aby odpowiedzieć