主题:  关于sort的问题

onlybecause

职务:普通成员
等级:1
金币:0.0
发贴:87
注册:2002/4/14 17:12:16
#12002/4/22 20:08:27
我最近想做一个产生一定数目的各不相同的随机数然后从小到大排序,只解决了一个问题,就是涉及到排序问题不好解决,不知道sort行不行,怎样做??我试了几次都不行,我手头有本《深入flash5编程》,但是其中的有关sort只是一笔带过,不知道对于纯数字进行排序怎样做,我没有怎么看懂,不知谁有更深入的解释?
还有我想对这本书提点我自己的意见,这本书总体技术含量是可以,但是在文法上有点混乱,可能是不同的 作者有不同的写法有关,但是我觉得一本成熟的计算机类图书应该有一个比较规范的语汇标准,甚至我曾经想过是不是应该有个《计算机书籍写作手册》:),在例子上的做法不妨做中英文对照,照顾一下绝大多数英文不大好的闪友们。



icemedia

职务:普通成员
等级:1
金币:0.0
发贴:124
注册:2001/5/16 11:22:51
#22002/4/23 15:44:50
一般的排序比较简单:
建立数组,其中包含你的数据
yourArray=new Array(3,5,2,4,1);
yourArray.sort()
即可
但可以自己指定排序的方式,就要用参数了
yourArray.sort( order )
略烦,还是看帮助里的示例程序吧!
示例程序有错误,改正后如下,放到FRAME 中运行看结果吧!

passwords = [
"gary:foo",
"mike:bar",
"john:snafu",
"steve:yuck",
"daniel:1234"
];

trace ("Origin:");
trace (passwords.join());

passwords.sort(order);
trace ("Sorted:");
trace (passwords.join());

function order (a, b) {
// 用PASSWORDS中元素的第一部分作为排序标准
var name1 = a.split(':')[0];
var name2 = b.split(':')[0];
if (name1 < name2) {
return -1;
} else if (name1 > name2) {
return 1;
} else {
return 0;
}
}



onlybecause

职务:普通成员
等级:1
金币:0.0
发贴:87
注册:2002/4/14 17:12:16
#32002/4/23 18:09:54
谢谢大哥指教,不过好象代码有点问题运行不了
var name1 = a.split(':')�;
var name2 = b.split(':')�;
大哥能否再给小弟我写一遍
split是数组的哪个属性,
我对这些不熟。



onlybecause

职务:普通成员
等级:1
金币:0.0
发贴:87
注册:2002/4/14 17:12:16
#42002/4/23 18:35:42
ice兄:我刚才还测试了一下关于纯数字的排序,不知道为什么不行
代码如下
zx = new Array(4, 5, 1, 8, 11, 7, 23, 19);
zx.sort();
trace (zx[0]);
trace (zx[1]);
trace (zx[2]);
trace (zx[3]);
trace (zx[4]);
结果输出
1
11
19
23
4
很奇怪,怎么是乱码??这里的帖子怎样设置才不会有乱码,
上面主要是我输出zx0、zx1、zx2、zx3、zx4

编辑历史:[这消息被onlybecause编辑过(编辑时间2002-04-23 18:37:40)]
[这消息被onlybecause编辑过(编辑时间2002-04-23 18:39:28)]
[这消息被onlybecause编辑过(编辑时间2002-04-23 18:47:17)]


icemedia

职务:普通成员
等级:1
金币:0.0
发贴:124
注册:2001/5/16 11:22:51
#52002/4/23 19:55:15
zx = new Array(4, 5, 1, 8, 11, 7, 23, 19);

zx.sort(order);

trace (zx.join());

function order (a, b) {
var name1 = a
var name2 = b
if (name1 < name2) {
return -1;
} else if (name1 > name2) {
return 1;
} else {
return 0;
}
}
--测试通过



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#62002/4/23 20:05:20
数组运算符和帖子的UBB发生冲突,用一个空格把左右方括号隔开就没事了,不过,不要直接copy呀



icemedia

职务:普通成员
等级:1
金币:0.0
发贴:124
注册:2001/5/16 11:22:51
#72002/4/23 20:21:52
我开始的回答的确有问题,对不起-
-------------
split 是字符串的方法
将字符串中指定间隔符分隔的字符分开并成为一个数组
如:
a= "aaa:bbb"
则 trace (a.split(":" )) 为 aaa,bbb
若用a.split(":" )[ 1 ]
则返回aaa,bbb中的编号为 1 的字符串,aaa编号为0,bbb编号为1,所以返回 bbb
帮助上很详细的
动手测试一下吧

编辑历史:[这消息被icemedia编辑过(编辑时间2002-04-23 20:23:39)]


onlybecause

职务:普通成员
等级:1
金币:0.0
发贴:87
注册:2002/4/14 17:12:16
#82002/4/23 22:26:48
非常谢谢大哥的指教,测试成功了,我被这个问题难住好久了
我那个东东做出来再拿给大哥看看,我写的代码我觉得过于复杂了,

编辑历史:[这消息被onlybecause编辑过(编辑时间2002-04-23 22:29:21)]