Массивы (вероятно разреженные) в Indesign

  • Автор темы Автор темы Vadim_PDF
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Имеем коллекцию Nunbering List -> name - в виде объекта (в js все объекты в принципе). Длинна массива - Length 68, а самих name 20 - как получить массив этих имен без пустых (undefined) значений. Грубо говоря пересобрать массив выкинув пустые значения.
Понимаю, что вопрос скорее из базовых знаний js - коих не хватает. Но быстрого ответа в инете не нашел.

Untitled-1.png
 
Извините, был не прав, значений реально не 20 а 68 - просто дебагер их не показывает что ввело в смятение.
Перебор делается как для объектов
Код:
for(var i in myNumber) {
    if (!myNumber.hasOwnProperty(i)) continue;
   alert(myNumber);
}
 
Последнее редактирование модератором:
Не пойму сути вопроса - а чем простое поэлементное копирование в другой массив существующих элементов не подходит? Или одной командой надо? Так это точно нельзя.
 
т.е. Вы делаете перебор и заталкиваете нужные значения в новый массив (например myNunberingList)?
Код:
myNunberingList.push(myNumber(i))
так как удалять объекты нарпямую из "живой" коллекции невозможно.
 
Ну я б, например, так и делал. А почему нет?
 
Просто прямым перебором (if (i=0; i<numberingList.length; i++))- именно на этом файле, со вставками из ворда пару значений пришло "undefined". Так как в дебагере высвечивалась только часть массива, я подумал, что это либо разряженный массив, либо js-движок Indesign-а выдает какие-то левые значения (например свойства встроенных функций). Либо был глюк. Потому, что не воспроизводится сейчас. Либо моих знаний по js маловато...
В общем подумал что lenght выдает не только размер коллекции (хеша), а ещё и плюсует количество встроенных в объект функция.. В общем это была неверная догадка.
 
Ну я так понимаю, это баг импорта, скорее всего.
И все равно не понял, что мешает делать поэлементное копирование c проверкой?
 
Сейчас - уже ничего. :)
 
Статус
Закрыто для дальнейших ответов.