![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 297
|
Здравствуйте. Помогите, пожалуйста. Я написал такой, который позволяет перемещать произвольный элемент массива в конец. Но меня интересует, есть ли возможность упростить мой код или, может быть, существует команда, которая позволяет сделать тоже самое, но с помощью одной строки. Большое спасибо.
//Цель: изменение индекса элемента массива — с одного места (допустим: 1) в другое (в конец) (Другими словами: перемещение произвольного элемента массива в конец). //Определяю массив: var array:Array = [1,2,3,4,5]; //Вывожу значение массива: trace(array);//trace: 1,2,3,4,5 //Определяю объект: var object:Object = []; //Изменяю значение объекта на произвольный элемент массива: object = array[0]; //Удаляю произвольный элемент массива (тот, который стал в качестве значения object: array.splice(0,1); //Добавляю значение object в массив: array.push(object); //Очищаю значение object: object = null; //Вывожу значение массива: trace(array);//trace: 2,3,4,5,1 |
|
|||||
|
Ну еще проще — в одну строчку
Можно и без [0] в конце, но я не знаю почему
__________________
cats are supreme beings |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
То есть, массив [1,2,3,4,5], если из него убрать 3 и поместить в конец, станет [1,2,4,5,[3]]. но трейс выдаст 1,2,4,5,3, что ошибочно даст впечатление, что [0] не нужен. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
Цитата:
|
|
|||||
|
Цитата:
Dip52: [0] нужен и очень даже нужен!
__________________
cats are supreme beings |
|
|||||
|
Modus ponens
|
Только вот фишка в том, что splice не смотря на то, что должна модифицировать массив, в этом случае, выделит память под массив по-новой, иногда это не принципилаьно, но иногда лучше так не делать (если массив большой). Аналогично динамическое наращивание массива скорее всего приведет к выделению памяти и копированию массива. Так что, если массив очень большой, а время не особо критично, то ИМО, лучше просто сместить все оставшиеся элементы на единичку влево, а последний заменить тем, который нужно переставить.
package { import flash.display.Sprite; public class RotateShiftExample extends Sprite { public function RotateShiftExample() { super(); // 1,2,4,5,3 trace(rotateShift([1, 2, 3, 4, 5], 2)); } private static function rotateShift( array:Array, index:int):Array { var limit:int = array.length - 1; var element:Object = array[index]; while (index < limit) array[index] = array[++index]; array[index] = element; return array; } } }
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 15.12.2012 в 18:11. |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 297
|
А чем отличается var object:Object = new Object(); от var object:Object; ? В первом случае он до конца определен? Если да, то я представлял, что [] и есть конечное определение объекта. Если я неправильно понимаю, помогите, пожалуйста, понять правильно. Спасибо.
![]() |
|
|||||
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|