- 1. 关于Ajax开发需要遵循的十大守则 http://www.uzzf....
- 2. 超级加密精灵(文件数据加密保护的完美解决方案) V...
- 3. 宇润灰色按钮克星(灰色禁止按钮的完美解决方案) V1...
- 4. DVDFab Platinum(无损复制dvd电影的完美解决方案) ...
- 5. Z小窗口(网页视频飞出窗口后的解决方案) V1.0(r45)...
- 6. 凌云好用剪切板(快速填表格,快速填序列号的解决方案...
- 7. ADSL错误代码查询(提供拨号故障解决方案) V1.0
- 8. Mozilla Thunderbird(跨平台的邮件解决方案) V3....
- 9. 虾米音乐(无线音乐解决方案)for Android v1.3.0 ...
- 10. 神龙会员管理系统(会员管理全套解决方案) V5.50 ...
一个关于JS数组通过手动排序问题的解决方案
问题实例:
var arr = new Array(5)
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
arr[3] = "Kai Jim"
arr[4] = "Borge"
document.write(arr + "<br />")
arr.splice(2,2)
document.write(arr + "<br />")
这段代码的输出结果是:
Jani,Hege,Stale,Kai Jim,Borge
Jani,Hege,Borge
同样是数组的splice()方法,下面这段代码结果却不一样
var Num_1=[];
var Num_2=[];
var num;
for(var i=1;i<50;i++){
Num_1.push(i<10?"0"+i:i);
}
for(var i=0;i<5;i++){
num=Num_1.splice(Math.floor(Math.random()*Num_1.length),1);
Num_2.push(num);
}
document.write("随机产生的号码:"+Num_2.sort());
splice(x,y)方法是从索引的x开始删除y个元素
但是num=Num_1.splice(Math.floor(Math.random()*Num_1.length),1);
这个应该是删除一个元素 还有49个元素
可是问什么num就是一个数
求解为什么
还有sort()方法是数组排序,我声明一个数组添加5个数据型元素,然后用sort()方法却不能排序,需要设置个参数
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort())
</script>
这个结果是
10,5,40,25,1000,1
1,10,1000,25,40,5
没有排序
<script type="text/javascript">
function sortNumber(a,b)
{
return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
</script>
需要在设置个方法才能排序
而最上面个的那段程序直接用sort()就能排序,没有参数,为什么 求解?
解决方案:
// [0,1,2].splice(1,1) : [1]
2. sort是可以不用传递比较函数的,它会直接使用默认的比较。你的第二段代码中排序是成功的,1,10,1000,25,40,5,你没发现它们起始数字是递增的吗?因为你push进去的是字符串,它是以字符串比较来排序的("b">"a", "b"<"ba")。同理,第一段代码你觉得是按数字排序,实际还是按字符串排序的,不信你去掉1位数的"0"前缀