JQuery версия массива. содержит - PullRequest
55 голосов
/ 16 января 2009

Может ли jQuery проверить массив на наличие объекта (как часть основных функций или через доступный плагин)?

Кроме того, я ищу что-то вроде array.remove, которое удаляло бы данный объект из массива. Может ли jQuery справиться с этим для меня?

Ответы [ 4 ]

91 голосов
/ 16 января 2009

jQuery.inArray возвращает первый индекс, соответствующий элементу, который вы искали, или -1, если он не найден:

if($.inArray(valueToMatch, theArray) > -1) alert("it's in there");

Вам не нужен массив. Используйте сращивание:

theArray.splice(startRemovingAtThisIndex, numberOfItemsToRemove);

Или вы можете выполнить «удаление», используя jQuery.grep util:

var valueToRemove = 'someval';
theArray = $.grep(theArray, function(val) { return val != valueToRemove; });
3 голосов
/ 30 апреля 2010

Если ваш список содержит список элементов, то вы можете использовать jQuery.not или jQuery.filter для создания вашего "array.remove". (Ответ добавлен из-за высокой оценки Google вашего исходного вопроса).

0 голосов
/ 14 февраля 2013

Это не jQuery, но в одну строку вы можете добавить удобный метод «содержит» для массивов. Я считаю, что это помогает с удобочитаемостью (особенно для людей питона).

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]
0 голосов
/ 12 января 2011

Я нашел способ удалить объект:

foot = { bar : 'test'};
delete foot[bar];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...