|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Удаление элемента ассоциативного массива.
Подскажите плиз.
Создан ассоциативный массив: var sprt:Sprite = new Sprite(); var assArr:Object = new Object(); assArr["sprite1"] = sprt; Речь идёт об удалении элемента ассоциативного массива, а не об удалении спрайта sprt. Если можете поправить на предмет правильности удаления элементов из асс.массива - подскажите плз. |
|
|||||
Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
|
Доброго времени суток. " = null " - неправильное решение, для удаления элемента массива есть "delete"
|
|
|||||
var sprt:Sprite = new Sprite(); var assArr:Object = { }; // То же что и assArr:Object = new Object(); trace( assArr["sprite1"] ); // undefined assArr["sprite1"] = sprt; trace( assArr["sprite1"] ); // [object Sprite] assArr["sprite1"] = null; trace( assArr["sprite1"] ); // null assArr["sprite1"] = sprt; delete assArr["sprite1"]; trace( assArr["sprite1"] ); // undefined var prop:String; trace("-- 1 --"); assArr["sprite1"] = sprt; for (prop in assArr) trace(prop); // sprite1 trace("-- 2 --"); assArr["sprite1"] = null; for (prop in assArr) trace(prop); // sprite1 // Динамическое свойство 'sprite1' остается в объекта // просто теперь оно равно null. trace("-- 3 --"); assArr["sprite1"] = sprt; delete assArr["sprite1"]; for (prop in assArr) trace(prop); // nothing // Здесь же удаляется само свойство. |
|
|||||
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Спасибо, буду разбираться.
Добавлено через 13 минут И ещё прошу уточнить, в том случае если речь идёт о многомерной структуре данных заложенной в ассоциативный массив. Если элементом ассоциативного массива assArr является многомерный массив assArr["myarray3"] (в моём случае трёхмерный) то если написать: то удалятся все элементы всех уровней массива assArr["myarray3"]? |
|
|||||
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Есть вещи которые разным людям даются по-разному. Есть области знаний которые требуют точной уверенности в том что результат именно такой и никакой другой и в этом случае я например, предпочитаю спросить.
|
|
|||||
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Тогда как я понял в моём случае необходимо взять элемент ассоциативного массива, а это трёхмерный массив (класс Array) и обнулить(=null) тройным циклом каждый элемент массива, а уж затем обнулить или удалить (delete) и сам массив, элемент ассоциативного масива, как-то так:
// Удаление объектов, массив assArr["myarray3"] обычный, не ассоциативный, по-этому можно(?) обратиться к length for(var i:int; i < assArr["myarray3"].length; i++){ for(var k:int; k < assArr["myarray3"][i].length; k++){ for(var c:int; c < assArr["myarray3"][i][k].length; c++){ assArr["myarray3"][i][k][c] = null; } assArr["myarray3"][i][k] = null; } assArr["myarray3"][i]; } delete assArr["myarray3"]; Вопрос на самом деле не совсем праздный, может лучше так? public function nullArray3(arg1:Array):void { var i2, k2, c2; i2 = arg1.length -1; for (var i:int = i2; i >= 0; i--) { k2 = arg1[i].length - 1; for (var k:int = k2; k >= 0; k--) { c2 = arg[i][k].length - 1; for (var c:int = c2; c >= 0; c--) { arg1[i][k][c] = null; } arg1[i][k] = null; } arg1[i] = null; } arg1 = null; } |
|
|||||
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Пожалуйста, поконкретнее если можно, этого достаточно:
применительно к вышесказанному мною assArr["myarray3"] это arg1 в nullArray3(arg1:Array)... |
Часовой пояс GMT +4, время: 21:22. |
|
« Предыдущая тема | Следующая тема » |
|
|