PDA

Просмотр полной версии : str.split(',') = array of number


__i
10.04.2006, 11:48
Как сделать чтоб сплит мне вернул сразу массив чисел, а не строк ?
Или как это сделать наиболее оптимально с наименьшили затратами процессорного времени?.

в строке приходит огромный массив чисел разделленых запятой (этак тыщь 30),
просто делать потом циклов array[i] = Number(array[i]) довольно таки ресурсоемко %(.
благо мне все равно приходиться пробегать циклом по этим числам и я туда этот Number вставил.

Нужно именно числа т.к. потом с ними производиться множество операций (например суммирование, а флеш по умолчанию начинает суммировать их как строки %(( ). а вставлять каждый раз num=Number(array[i])+Number(array[i]) не выход

Homo Sapiens
10.04.2006, 11:53
А что, так принципиально переводить в числа?

__i
10.04.2006, 11:58
а ты попробуй

str = '1,2,3,4,56,7'
my_ar = str.split(',')
s = new Number(0)
for (i=0; i< my_ar.length; i++){
s+=my_ar[i];
}
trace(s)

AxelRB
10.04.2006, 12:07
Скорее всего никак.
С преобразованием типов во флэше вообще какой-то геморрой. Никогда не знаешь какой тип тебе дадут. Мой пример:

class .... {
...
private var __width:Number;
private var __height:Number;
public function onResize() {
var W:Number = (__width==0)?__mc.getDefaultWidth():(__width<0)?Stage.width+Number(__width):__width;
var H:Number = (__height==0)?__mc.getDefaultHeight():(__height<0)?Stage.height+Number(__height):__height;
...
}
}

Пока не поставил принудитально преобразование в число, временами выдавало NaN !!! Предварительно значение присваивается всегда, поэтому дело не в undefined.
Короче, я так и не понял в чем прикол. Полным перебором искал, как исправить глюк. Исправил. Но до сих пор не понял как.

__i
10.04.2006, 12:09
2AxelRB по умолчанию флеш оперирует со всем как со строками , по этому у тебя получалось он считал строка + число = NaN %(

AxelRB
10.04.2006, 12:12
Ну, так и сейчас в такой слечае строка+число, если он Stage.width как строку вопринимает. Но сейчас все работает...

Как-то все загадочно... Сделали б уж тогда эксплисит преобразования все. А то как-то...

Madasan
10.04.2006, 12:40
а вставлять каждый раз num=Number(array[i])+Number(array[i]) не выходНо вставлять то все равно придется, то есть от преобразования никуда не денешься. А куда это преобразование вставлять - это уже по ситуации...