Array.sortOn

3 отговора 0 прегледа
#1

Array.sortOn

Имам следния масив myArray:

myArray[0]
name: John
score: 10

myArray[1]
name: Peter
score: 25

myArray[2]
name: Mike
score: 110

Използвайки myArray.sortOn("score", 2|16) се опитвам да подредя масива според стойностите на score в намаляващ ред, броени като числа, а не като стрингове.
Ето хелпа за тази функция, където е обяснено и значението на 2|16.

2-та (подреждане в намаляваш ред) си работи нормално - като я има, стойностите са в намаляващ ред, като я няма - в нарастващ.
Обаче 16-та не ще - и да я слагам, и да я махам, и Array.NUMERIC да слагам - все си ги подрежда като стрингове. Т.е. резултатът е такъв:
25
110
10

Флашът е публикуван като съвместим с версия 8, ActionScript 1.0, и функцията трябва да действа, ама не ще
Някакви идеи?

Отговор
в отговор на vens #2

Re: Array.sortOn

не знам как вкарваш данните в array-а, но ако е по начина по който е тук, няма да ти върне това което искаш. пробвай с това както е на страницата им
my_array.push({password: "abcd", age:3});
my_array.push({password: "barb", age:35});
my_array.push({password: "catchy", age:4});

Отговор
в отговор на ghs #3

Re: Array.sortOn

Ами начина е следния:

vars = new loadVars();
vars.onLoad = function {
тук пълня данните от vars в съответните полета на myArray
}
vars.load("file.txt");


Направих експеримент - ако задавам стойностите директно, т.е.:
myArray[0].score = 5;
myArray[1].score = 15;
myArray[2].score = 74;
myArray[3].score = 28;

тогава подреждането работи. Ама ако го пълня по горния начин - не ще.
Нямам идея защо така

Отговор
в отговор на vens #4

Re: Array.sortOn

Ако за някой ще е полезно - открих решението, но не и отговора
Проблемът се реши, като преди задаване на стойност на myArray.score, конвертирам тази стойност от string на number. Тогава подреждането работи.

Но пак не е ясно какъв е тогава смисълът на Array.NUMERIC, която би трябвало да подрежда string-ове не като текст, а като числа.

Както и да е - важното е, че този път работи. Ще видим за следващия проект...

Отговор