Преобразование между массивом ActionScript (Object []) и вектором. <Object> - PullRequest
15 голосов
/ 30 ноября 2010

Существуют ли варианты преобразования Array в Vector в ActionScript без итерации массива?

Как насчет другого способа (преобразования Vector в Array)?

Ответы [ 3 ]

26 голосов
/ 30 ноября 2010

Для Array до Vector используйте функцию Vector.<TYPE>(), которая принимает массив и возвращает созданный вектор:

var aObjects:Array = [{a:'1'}, {b:'2'}, {c:'3'}];
// use Vector function
var vObjects:Vector.<Object> = Vector.<Object>(aObjects);

Для других естьнет встроенной функции, поэтому вы должны выполнить цикл над каждым элементом Vector и поместить его в Array

2 голосов
/ 17 февраля 2015
vObjects.push.apply(null, aObjects);

И еще один способ сделать это.

Трюк здесь прост. Если вы попытаетесь использовать метод concat() для загрузки вашего массива в вектор, он потерпит неудачу, потому что вход является вектором, и вместо добавления элементов вектора AS добавит весь вектор как одну запись. И если бы вы использовали push(), вам нужно было бы просмотреть все элементы в массиве и добавить их один за другим.

В ActionScript каждая функция может быть вызвана тремя способами:

  • Обычный способ: vObjects.push(aObjects)

    Выдает ошибку, потому что aObjects это не Object, а Array.

  • Метод call: vObjects.push.call(this, myObject1, myObject2, ..., myObjectN)

    Не помогает нам, потому что мы не можем разбить массив aObjects на список через запятую, который мы можем передать функции.

  • Метод apply: vObjects.push.apply(this, aObjects)

    Пройдя по этому маршруту, AS с радостью примет массив в качестве входных данных и добавит его элементы в вектор. Вы все равно получите ошибку времени выполнения, если типы элементов массива и вектора не совпадают. Обратите внимание на первый параметр: он определяет то, что ограничено this при запуске функции, в большинстве случаев null будет в порядке, но если вы используете ключевое слово this для вызова функции, вы должны передать что-то отличное от null.

0 голосов
/ 05 августа 2014

var myArray: Array = [] .concat (myVector);

может работать.

...