![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Добрый день ниже приведён код образования и сортировки массива
но почему при одинаковых значениях "value" не происходит сортировка по возрастанию "key" var records:Array = new Array();
var str:String = new String();
var mstr:String = new String();
var i:uint;
var j:uint;
str = "A=0.7,B=0.1,C=0.08,D=0.12";
var strV1:Array=str.split(",");
var strV2:Array = new Array();
var strK:Array = new Array();
var strV:Array = new Array();
for(i = 0; i < strV1.length; i++) {
mstr = strV1[i];
strV2 = mstr.split("=");
strK.push(strV2[0]);
strV.push(strV2[1]);
}
for(i = 0; i < strK.length; i++) {
for(j = 0; j < strK.length; j++) {
records.push({key:(strK[i]+strK[j]), value:(strV[i]*strV[j])});
}
}
records.sortOn("value", Array.NUMERIC | Array.DESCENDING);
for(i = 0; i < records.length; i++) {
trace(records[i].key + " - " + records[i].value);
}
Цитата:
|
|
|||||
|
Регистрация: Sep 2008
Сообщений: 8
|
не сортируется по ключу, вероятно потому, что вы не указываете сортировку по ключу, например так:
records.sortOn( ["value", "key" ], [ Array.NUMERIC | Array.DESCENDING, Array.CASEINSENSITIVE ] ); Насчет дробных чисел: как же вы, наверное, удивитесь, когда посмотрите "trace( Math.sin( Math.PI ) ) ;" Читайте хелп по типам данных и точности дробных чисел. |
|
|||||
|
неужели только округлять?
а других вариантов кроме как нет? Последний раз редактировалось iNils; 02.11.2008 в 00:50. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 78
|
тоже почему-то по убыванию(DESCENDING) не срабатывает, зато работает CASEINSENSITIVE на numbers
var items:Array = [ {"balance":400}, {"balance":50}, {"balance":2198}] sortField("balance", Array.NUMERIC) sortField("balance", Array.DESCENDING) sortField("balance", Array.CASEINSENSITIVE) function sortField(field:String, type:uint){ trace("---") traceItems() items.sortOn(field, type) traceItems() } function traceItems() { var s:String = " " for (var i:int = 0; i < items.length; i++) { s += items[i].balance +" "+typeof(items[i].balance)+"\n " } trace(s) } Даж дробей нет, почему ж не срабатывает DESCENDING ?? |
|
|||||
|
стервочка (я мужик)
|
нормально срабатывает. как написано так и работает. хелп надо изучать подробнее.
var arr:Array = new Array(500, 1000, 25); arr.sort(); trace( "строка:", arr ); arr.sort( Array.DESCENDING ); trace( "обратная строка:", arr ); arr.sort( Array.NUMERIC ); trace( "число:", arr ); arr.sort( Array.DESCENDING | Array.NUMERIC ); trace( "обратное число:", arr ); |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 78
|
Понятно, потому что хэш не число
|
|
|||||
|
стервочка (я мужик)
|
нет. потому что нужно указывать одновременно и сортировку по числу, и по убыванию. внимательность у Вас на нуле.
|
|
|||||
|
Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
|
Извиняюсь, несколько не по теме. А есть какой-нибудь code editor, который умел бы так подсвечивал код, как в ваших последних постах? Сам флэш в этом ограничен.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|