将稀疏数组变为有序数组

光庆 6月前 674

Code AardioLine:36复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
    • 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)
    • 聪明蛋 6月前
      0 2
      原稀疏数组只有4条记录,为什么需要2.+秒才完成呀?
    • 光庆 6月前
      0 3
      聪明蛋 原稀疏数组只有4条记录,为什么需要2.+秒才完成呀?
      因为遍历的最小索引到最大索引之间的所有值。改了一下,参考第2种方法,用keys实现,就可以避免出现这种情况了。
    返回