#jquery #jquery-selectors
#jquery #jquery-селекторы
Вопрос:
Я знаю, что этот код правильный, я его не писал. Я пытаюсь понять, что делает код.
- создать переменную
- перебор дочерних элементов неупорядоченного списка
- установите CssClass = имя класса
- если CssClass отсутствует в myarray, добавьте его в myarray
Я знаком с другими способами проверки наличия элемента в массиве и знаком с другими способами добавления элемента в массив, но этот метод меня смущает. Поддерживают ли другие языки этот тип синтаксиса?
var myarray = [];
$(".somelist > li").each(function() {
var cssClass = $(this).attr("class");
//This part below is CONFUSING
if(!myarray[cssClass]) {
myarray[cssClass] = true;
}
});
Комментарии:
1.
myarray = []
должно бытьmyarray = {}
, если какое-либо из имен классов не является целым числом.2. Запутанный и глупый бит заключается в том, что
myarray
это массив, а не объект. Конечно, массивы тоже являются объектами, просто они не используются как массив3. Эта ссылка может быть полезна другим. javascriptkata.com/2007/03/29/how-to-use-javascript-hashes
4. другая ссылка blog.persistent.info/2004/08/javascript-associative-arrays.html
Ответ №1:
Если хэш / карта не содержит записи для данного класса, добавьте ее.
Он создает коллекцию всех классов, используемых элементами списка в классе somelist.
Ответ №2:
1 if(!myarray[cssClass]) {
2 myarray[cssClass] = true;
}
Вот краткое описание того, что происходит, myarray
переменная используется в качестве хэша —
1 — Проверяет, находится ли текущее имя класса в массиве. myarray[cssClass]
вернет «ложное» значение, если имя класса не включено в массив.
2 — Если класса нет в массиве, добавьте его в массив и установите для него значение true
Ответ №3:
В этом случае оно будет false, только если оно впервые встречается в этом массиве. Когда это второй цикл и класс тот же, он не изменит его true
снова. Хотя это не имеет смысла. Этот код является синонимом
var myarray = [];
$(".somelist > li").each(function() {
var cssClass = $(this).attr("class");
myarray[cssClass] = true;
});
Ответ №4:
Если массив не содержит записи с ключом, представленным переменной CssClass, он добавит ее и установит значение этого ключа в true . Если он уже существует, он остается true…so
if(!myarray[cssClass]))
возвращает false, если нет ключа со значением, заданным переменной CssClass.
Я не знаю контекста этого кода, но с этого момента он кажется немного бесполезным.