将稀疏数组变为有序数组

光庆 1月前 327

import console; 

var t = {
    [11]={id=11;classId=3;name="张三"};
    [4]={id=4;classId=3;name="张三"};
    [1]={id=1;classId=3;name="张三"};
    [99999999]={id=99999999;classId=3;name="张三"};
    [2]={id=2;classId=3;name="张三"};
    strkey9 = "str999999";
    strkey1 = "str111111";  
}
console.dump("原稀疏数组:",t,"#t获取的成员数:",#t,'\n\n')

var ts = time.tick()
var s,a,b = {},table.range(t);
for(i=a;b;1){
    if t[i]!==null {
        table.push(s,t[i])
    }
}
ts = time.tick()-ts
console.dump("生成一个有序数组(忽略字典成员):",s,"#t获取的成员数:",#s,"耗时:",ts,'\n\n')

var ts = time.tick();
var keys,result={},{};
for(k,v in t){
    if type(k)==="number" ..table.push(keys,k);
}
..table.sort(keys);
for(i=1;#keys;1){
    ..table.push(result,t[keys[i]]);
}
ts = time.tick()-ts
console.dump("生成一个有序数组(忽略字典成员):",result,"#t获取的成员数:",#result,"耗时:",ts,'\n\n')

console.pause();
最新回复 (2)
  • 聪明蛋 1月前
    0 2
    原稀疏数组只有4条记录,为什么需要2.+秒才完成呀?
  • 光庆 1月前
    0 3
    聪明蛋 原稀疏数组只有4条记录,为什么需要2.+秒才完成呀?
    因为遍历的最小索引到最大索引之间的所有值。改了一下,参考第2种方法,用keys实现,就可以避免出现这种情况了。
返回