Может ли кто-нибудь сказать мне, как определить, появляется ли "specialword"
в массиве? Пример:
categories: [
"specialword"
"word1"
"word2"
]
Может ли кто-нибудь сказать мне, как определить, появляется ли "specialword"
в массиве? Пример:
categories: [
"specialword"
"word1"
"word2"
]
Вам действительно не нужен jQuery для этого.
var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles") > -1);
или
function arrayContains(needle, arrhaystack)
{
return (arrhaystack.indexOf(needle) > -1);
}
Стоит отметить, что array.indexOf(..)
не поддерживается в IE < 9, но функция jQuery indexOf(...)
будет работать даже для старых версий.
jQuery предлагает $.inArray
:
Обратите внимание, что inArray возвращает индекс найденного элемента, поэтому 0
указывает, что элемент является первым в массиве. -1
указывает, что элемент не найден.
var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];
var foundPresent = $.inArray('specialword', categoriesPresent) > -1;
var foundNotPresent = $.inArray('specialword', categoriesNotPresent) > -1;
console.log(foundPresent, foundNotPresent); // true false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Здесь вы идете:
$.inArray('specialword', arr)
Эта функция возвращает положительное целое число (индекс массива заданного значения) или -1
, если данное значение не было найдено в массиве.
Живая демонстрация: http://jsfiddle.net/simevidas/5Gdfc/
Вероятно, вы хотите использовать это так:
if ( $.inArray('specialword', arr) > -1 ) {
// the value is in the array
}
Вы можете использовать цикл for
:
var found = false;
for (var i = 0; i < categories.length && !found; i++) {
if (categories[i] === "specialword") {
found = true;
break;
}
}
Мне не нравится $.inArray(..)
, это своего рода уродливое, jQuery-ish решение, которое большинство здравомыслящих людей не потерпит. Вот фрагмент, который добавляет простой contains(str)
метод в ваш арсенал:
$.fn.contains = function (target) {
var result = null;
$(this).each(function (index, item) {
if (item === target) {
result = item;
}
});
return result ? result : false;
}
Аналогично, вы можете обернуть $.inArray
в расширение:
$.fn.contains = function (target) {
return ($.inArray(target, this) > -1);
}