Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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);
        });
    }
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2016, 23:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Dark19,
3 строка перенесите в 6
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2016, 23:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Dark19,
var cache = [],

            leftPos = 0,
            topPos = 0;
        $(el).each(function(idx){ var obg = {};
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2016, 23:11
Аспирант
Отправить личное сообщение для Dark19 Посмотреть профиль Найти все сообщения от Dark19
 
Регистрация: 29.04.2014
Сообщений: 82

Сообщение от рони Посмотреть сообщение
Dark19,
var cache = [],

            leftPos = 0,
            topPos = 0;
        $(el).each(function(idx){ var obg = {};
ахаха, жесть
Спасибо, что раскрыли глаза
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать новый массив из массива внутри объекта? Enkille Общие вопросы Javascript 14 14.07.2016 18:26
помещение элементов в массив из объекта gazman Общие вопросы Javascript 16 02.04.2016 23:44
Добавление данных в многомерный массив rneft Элементы интерфейса 11 28.03.2016 17:56
динамическое обновление свойств объекта в цикле grego Общие вопросы Javascript 3 04.12.2013 23:29
Не могу вытащить массив из объекта по указателю из самого объекта bunta Общие вопросы Javascript 3 09.09.2010 18:44