Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.05.2015, 17:15
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 1  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
Question Вычленить пустые значения из массива

Приветствую, товарищи! C праздником!
Требуется из массива убрать все пустые ячейки
[1,,,,2,,,3,,,...,,,100] --> [1,2,3...100]

По какой-то удаленной от меня причине данный код их не сносит

Код AS3:
 
 var result:Array = new Array();
 
for (var f:int = 0; f < 100000; f++ )
{
	if ( array[f] != null ) 
                           {
			    result.push( array[f] );
		           }
}	
trace(result);

Старый 09.05.2015, 17:19
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 2  
Ответить с цитированием
OlmerDale

Регистрация: Jan 2015
Сообщений: 113
Код AS3:
var array:Array = [];
var length:int = array.length;
 
while (length-- > 0)
{
	if (array[length] == null)
	{
		array.splice(length, 1);
	}
}

Старый 09.05.2015, 17:28
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 3  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
Тестирую так(это стилизованный пример из кода с которым работаю)-
Код AS3:
var array:Array = [];
var txt:String="%%%%%%111%%%%%%abc%d%";
 
 
        array=txt.split("%")
 
 
var length:int = array.length;
 
while (length-- > 0)
{
	if (array[length] == null)
	{
		array.splice(length, 1);
	}
}
trace(array);
выдает ,,,,,,111,,,,,,abc,d, то бишь не работает

Старый 09.05.2015, 17:32
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 4  
Ответить с цитированием
OlmerDale

Регистрация: Jan 2015
Сообщений: 113
Так это и не null, это пустая, но строка! Как например 0.

Добавлено через 32 секунды
Вопрос конкретизируйте.

Добавлено через 3 минуты
Получается что массив не пустой, а наполнен пустыми строками.
Если в массиве у Вас только строки, а должны быть только они,
то уберите проверку на null и поставьте '' проверку на пустую строку.

Старый 09.05.2015, 17:45
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код AS3:
var txt:String = "%%%%%%111%%%%%%abc%d%";
var array:Array = txt.replace(/((^%+)|(%$))/g, "").replace(/%+/g, ",").split(",");
trace(array); // 111,abc,d

Старый 09.05.2015, 19:08
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 6  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Код AS3:
var txt:String = "%%%%%%111%%%%%%abc%d%";
var array:Array = txt.replace(/((^%+)|(%$))/g, "").replace(/%+/g, ",").split(",");
trace(array); // 111,abc,d

Так понимаю, это регулярное выражение? Честно говоря в них не силен. Если конкретизировать вопрос, то
имеется строка String, которую нужно избавить от пробелов и знаков %, и если от первых избавился путем убирания двойных и более пробелов, а затем сделал split(" "), то со вторыми проблема.
по сути ищу способ вот такое выражение:
txt:String="% %%Teкст% Ещетекст%Иещетекст % ";

преобразовать в:

array:Array=[Текст,Eщетекст,Иещетекст];

Старый 09.05.2015, 18:05
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 7  
Ответить с цитированием
OlmerDale

Регистрация: Jan 2015
Сообщений: 113
caseyryan, у меня в подписи ссылка для голосования за редактор.
Я когда его увидел очень обрадовался, ведь у ms очень быстрые ide которые написаны на c*.
Но когда я в него залез, то оказалось, что написан он на движке atom от githab, который написан на ноде,
которая вроде и быстрая, но редактор получился отстойным и лагающим.
А создавали атом для того, чтобы дать шанс не знающим питон писать плагины для своего редактора.
И именно эта благая идея погубила труд. Ведь в js очень хорошем тоном считается вот такая запись как У Вас, которая кстате была рубистыми привита. И вот значит рубисты хвастаются тем, как быстро они пишут код, а js разработчики слушают и уже представляют как они будут писать так же и даже стиль джедайским назвали. Но суть в том, что js делают сайты, в которых клики или какие-то события бывают очень редко и этот стиль прокатывает.

Но сейчас когда началась эра соккетов и сайтов аля флеш (без перезагрузки), они сотнями начали отмирать из-за такого подхода и им снова приходится переучиваться.

А as3 уж тем более требует знания оптимизации и получить в начале пути такой вот ответ от опытного коллеги, может причинить больше вреда чем пользы.

Старый 09.05.2015, 18:47
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 8  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
OlmerDale, сначала приведите свой вариант решения проблемы, прежде, чем осуждать чей-то (от Вас уже 2 поста в этой теме, и оба мимо цели).
Вполне нормальный подход и нормальная запись. 2 регулярных выражения, довольно простых, а дальше объединение результата в массив.
Что касается голосования, то я всеми правдами и не правдами против. Ибо майкрософтовская вижуал студио - это какой-то мастодонт. Весит под 10 гигабайт, да еще и грузится по полчаса. Я лучше флешдевелоп буду использовать.

п.с. Но по большому счету это
Цитата:
Но сейчас когда началась эра соккетов и сайтов аля флеш (без перезагрузки), они сотнями начали отмирать из-за такого подхода и им снова приходится переучиваться.
И это
Цитата:
Ведь в js очень хорошем тоном считается вот такая запись как У Вас, которая кстате была рубистыми привита. И вот значит рубисты хвастаются тем, как быстро они пишут код, а js разработчики слушают и уже представляют как они будут писать так же и даже стиль джедайским назвали. Но суть в том, что js делают сайты, в которых клики или какие-то события бывают очень редко и этот стиль прокатывает.
Мне совершенно пофиг. Никем мне эта запись не была привита, никакими рубистами или кем-то еще. Руби я вообще не знаю и никогда не интересовался. С JS тоже работаю очень редко и что там считается хорошим тоном, а что плохим, не особо в теме. Так пишу, потому, что это реально удобно в определенных случаях (как этот).

Старый 09.05.2015, 19:08
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 9  
Ответить с цитированием
OlmerDale

Регистрация: Jan 2015
Сообщений: 113
caseyryan, ну если снять паутину с глаз, то можно заметить что моих сообщений ТРИ!
А если ещё немного поднапречься, то увидите что голосования не за vs.
Ну и раз Вам пофиг, то и мне как бы пофиг.

Ну и если Вы скажите что ответ мой не втему, то прочтите ещё раз вопрос, а потом посмотрите
где упомянулась пустая строка.

Старый 09.05.2015, 20:11
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
что моих сообщений ТРИ!
Да хоть 10. Все равно решения вопроса в них нет. С удовольствием гляну на Ваше правильное и красивое решение. Но пока я его не наблюдаю. Так что хватит пустословить.
Цитата:
А если ещё немного поднапречься, то увидите что голосования не за vs.
Ну тогда тем более все равно, что там хотят / не хотят внедрить в майкрософте.

Цитата:
Так понимаю, это регулярное выражение? Честно говоря в них не силен. Если конкретизировать вопрос, то
имеется строка String, которую нужно избавить от пробелов и знаков %, и если от первых избавился путем убирания двойных и более пробелов, а затем сделал split(" "), то со вторыми проблема.
по сути ищу способ вот такое выражение:
txt:String="% %%Teкст% Ещетекст%Иещетекст % ";

преобразовать в:

array:Array=[Текст,Eщетекст,Иещетекст];
Тогда Вам надо просто обработать строку, приведя ее в правильный вид, а потом уже сделать массив из слов.

Код AS3:
var txt:String = "% %%Teкст% Ещетекст%Иещетекст % ";
// что происходит дальше: первая регулярка сносит все ненужные % и пробелы и заменяет их на один пробел
// второй проход убирает пробелы (любое количество) вначале и вконце строки
// ну а дальше просто делим это на массив по пробелам, которые остались
trace(txt.replace(/((\s+)|(%))/g, " ").replace(/(^\s+)|(\s+$)/g, "").split(/\s+/)); // Teкст,Ещетекст,Иещетекст
Наверняка все это можно сократить, и даже уложить в одну регулярку, если по-дольше поломать голову. Но приведенная задача таким способом решается

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:29.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.