добавление элемента в массив в jquery - PullRequest
0 голосов
/ 04 октября 2011

Я знаю, что этот код правильный, я его не писал. Я пытаюсь понять, что делает код.

  1. создать переменную
  2. цикл по потомкам неупорядоченного списка
  3. set cssClass = имя класса
  4. если класс 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;
    }
});    

Ответы [ 4 ]

2 голосов
/ 04 октября 2011

Если хеш / карта не содержит записи для данного класса, добавьте ее.

Создает коллекцию всех классов, используемых элементами списка в классе somelist.

1 голос
/ 04 октября 2011

Если в массиве нет записи с ключом, представленным переменной cssClass, он добавит ее и установит для этого ключа значение true.Если он уже существует, он остается истиной ... поэтому

if(!myarray[cssClass]))

возвращает ложь, если нет ключа со значением, которое установлено в переменной cssClass.Я не знаю контекста этого кода, но с этого момента он кажется немного бесполезным.

1 голос
/ 04 октября 2011
1 if(!myarray[cssClass]) {
2         myarray[cssClass] = true;
    }

Вот краткое описание того, что происходит, переменная myarray используется в качестве хеша -

1 - Проверяет, есть ли имя текущего класса в массиве.myarray[cssClass] вернет значение ' falsy ', если имя класса не содержится в массиве.

2 - Если класс отсутствует в массиве, добавьте его в массив иустановите значение true

1 голос
/ 04 октября 2011

В этом случае он будет ложным только в том случае, если это первый вхождение этого массива. Когда второй цикл и класс совпадают, он не изменится на true снова. Это не имеет смысла, хотя. Этот код является синонимом

    var myarray = [];
    $(".somelist > li").each(function() {
    var cssClass = $(this).attr("class");
    myarray[cssClass] = true;
});   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...