Показать сообщение отдельно
  #1 (permalink)  
Старый 11.12.2016, 22:55
Аспирант
Отправить личное сообщение для Dark19 Посмотреть профиль Найти все сообщения от Dark19
 
Регистрация: 29.04.2014
Сообщений: 82

Добавление объекта в массив в цикле
Доброго времени суток, пишу фильтр сортировки постов, с объектами не сильно знаком, но хочу все данные раскладывать по объектам, чтобы легче было работать. Суть такова, что аргумент el это класс блоков которые нужно сортировать, а count это количество выводимых блоков. Так вот в цикле я проверяю сколько нужно вывести блоков, задаю им параметры по условию и создаю часть полей объекта, после создаю остальные поля объекта без условия. После чего пробую запихнуть сформированный объект в массив, то есть должен выйти массив с определенным количеством объектов (по количеству постов) и каждый объект имеет различные значения полей, в зависимости от условий, но после проделанных операций вывожу в консоль массив, а все объекты в нем имеют одинаковые значения полей, хотя если я вывожу каждый объект перед записью в массив, то там все нормально, поля с разными значениями. Как заполнить массив объектами правильно чтобы не перезаписывался один и тот же объект на весь массив? Я наверняка, не знаю каких то свойств объекта, почему именно так получается.
function sorting(el,count){
        var cache = [],
            obg = {},
            leftPos = 0,
            topPos = 0;
        $(el).each(function(idx){
            if(idx < count){
                var parentWidth = $(this).parent().width(),
                    elWidth = $(this).outerWidth(),
                    elPrevWidth = $(this).outerWidth();
                $(this).data('show',1).addClass('show');
                if(elWidth + elPrevWidth <= parentWidth){
                    $(this).css({'left':leftPos,'top':topPos});
                    obg.left = leftPos;
                    obg.top = topPos;
                    leftPos += $(this).outerWidth();
                }
            }
            else{
                obg.left = 0;
                obg.top = 0;
            }
            obg.width = $(this).outerWidth();
            obg.height = $(this).outerHeight();
            obg.show = $(this).data('show');
            obg.category = $(this).data('slug');
            cache.push(obg);
        });
    }
Ответить с цитированием