sort之后就会进行排序的,
是正常
除非你在没有进行排序前记录下状态。

解决方案 »

  1.   

    可以得到:
    <script>
    arr=[3,2,1,8];
    str=arr.join("");
    arr.sort(function(a,b){return b-a});
    alert("排序后数组为:"+arr);
    for(var i=0;i<arr.length;i++){
    alert(arr[i]+"来自第"+(str.indexOf(arr[i])+1)+"个!");
    }
    </script>
      

  2.   

    你这不撑着...
    取一个拷贝 ar.slice()
    然后爱咋咋滴...
      

  3.   

    你们说的办法不可行吧?因为数组中有完全一样的数据时候就不能判断出来了,我用的方法是复制一个Arrayd,然后进行判断遇上一样的时候改变他的值使之能解决有完全一样的数据的问题
      

  4.   

    <script>
    arr=[3,2,1,3,8,3];
    str=arr.join("");
    arr.sort(function(a,b){return b-a});
    alert("排序后数组为:"+arr);
    var n=0;
    for(var i=0;i<arr.length;i++){
    if(arr[i-1]!=arr[i]||str.indexOf(arr[i],n)==-1){
    n=0;
    }
    alert(arr[i]+"来自第"+(str.indexOf(arr[i],n)+1)+"个!");
    n=str.indexOf(arr[i],n)+1;
    }
    </script>