версия jQuery массива.содержит
может ли jQuery проверить массив на наличие объекта (либо как часть основной функциональности, либо через доступный плагин)?
кроме того, я ищу что-то вроде array.remove
, Что бы удалить данный объект из массива. Может ли jQuery справиться с этим для меня?
4 ответа:
jQuery.inArray возвращает первый индекс, соответствующий искомому элементу, или -1, если он не найден:
if($.inArray(valueToMatch, theArray) > -1) alert("it's in there");
вам не нужен массив.удалять. Используйте соединение:
theArray.splice(startRemovingAtThisIndex, numberOfItemsToRemove);
или, вы можете выполнить "удалить" с помощью jQuery.грэп util:
var valueToRemove = 'someval'; theArray = $.grep(theArray, function(val) { return val != valueToRemove; });
Если ваш список содержит список элементов, то вы можете использовать jQuery.не или jQuery.фильтр чтобы сделать свой "массив.снимать." (Ответ добавлен из-за высокой оценки google вашего исходного вопроса).
это не jQuery, но в одной строке вы можете добавить удобный метод "содержит" в массивы. Я считаю, что это помогает с удобочитаемостью (особенно для python folk).
Array.prototype.contains = function(a){ return this.indexOf(a) != -1 }
пример использования
> var a = [1,2,3] > a.contains(1) true > a.contains(4) false
аналогично для удалить
Array.prototype.remove = function(a){if (this.contains(a)){ this.splice(this.indexOf(a),1)}; return this} > var a = [1,2,3] > a.remove(2) [1,3]
или, если вы хотите, чтобы он вернул удаленную вещь, а не измененный массив, то
Array.prototype.remove = function(a){if (this.contains(a)){ return this.splice(this.indexOf(a),1)}} > var a = [1,2,3] > a.remove(2) [2] > a [1,3]