/ / Видалити з масиву за допомогою переіндексу - AS3.0 - actioncript

Видалити з масиву з reindex - AS3.0 - actioncript

Я хотів би видалити елемент зі свого масиву, а потім мати однаковий індекс для кожного елемента.

Приклад

var arr:Array = new Array();
arr[1] = "One";
arr[2] = "Two";
arr[3] = "Three";

arr.splice(2, 1);

for(var index in arr) {
trace(index+":"+arr[index]);
}

Виходи:

1:One
2:Three

І повинен вийти

1:One
3:Three

Хтось, хто міг би мені тут трохи допомогти? :-)

Відповіді:

0 для відповіді № 1

Якщо ви зрощуєте елемент з масиву, масив оновлюється, а елементи після цього індексу переміщуються, щоб заповнити цей індекс.

Якщо ви дійсно хочете, щоб елементи завжди були в одному індексі, тоді призначте індекс порожнім рядком, а не зрощуйте його.

Спробуйте це:

array[1] = "";

замість,

array.splice(1, 1);

На мою думку, сплайсинг - це хороший спосіб практики.


0 для відповіді № 2

Ви можете використовувати видалити оператор:

var arr:Array = new Array();
arr[1] = "One";
arr[2] = "Two";
arr[3] = "Three";

delete arr[2];

for(var index in arr) {
trace(index+":"+arr[index]);
}

0 для відповіді № 3

Я знайшов рішення своєї проблеми.

Замість того, щоб використовувати масив, я буду використовувати об'єкт для зберігання моїх предметів. Ось так

var objArr = {1: "One", 2: "Two", 3: "Three"};

І коли я видаляю, я роблю так.

delete objArr[1];

Я знаю, що тоді я не отримаю функції масиву. Але в моєму випадку вони мені не потрібні.