asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0

JavaScript中对变量的操作都是通过引用方式,而对数组也一样。
前两天想要对一个数组进行复制,一直苦于找不到办法(遍历的方法俺是绝对不采用的)

无意中拿起《JavaScript权威指南》翻了翻数组的操作函数,发现了slice()函数。

slice()原来是用来截取数组中的一部分,这里我用它来复制数组,它的格式如下:
array.slice(start, end)
如果省略了end参数,则切分的数组包含从start开始到数组结束的所有元素。

现在要用它来复制数组,就一行,呵呵:
var newArray=oldArray.slice(0);



所有这些功能,用一个sort()就可以完成了。

1. 排序:
默认的sort()按字符编码排序的:

<script type="text/javascript">
<!--
 var testArray=[3,324,5345,6546,134,5654,665];
 testArray.sort();
 alert(testArray);
//-->
</script>

现在要让它按照数值大小排序:

<script type="text/javascript">
<!--
 var testArray=[3,324,5345,6546,134,5654,665];
 testArray.sort(function(a,b){return a-b;});
 alert(testArray);
//-->
</script>

只要传递一个比较函数给sort就可以了,如果比较函数的值小于0,则表示a必须出现在b前面,否则在b后面。

2. 乱序:
让比较函数随机传回-1或1就可以了:

<script type="text/javascript">
<!--
 var testArray=[1,2,3,4,5,6,7,8,9,10,22,33,55,77,88,99];
 testArray.sort(function(){return Math.random()>0.5?-1:1;});
 alert(testArray);
//-->
</script>

3. 搜索:
用sort()来玩搜索还蛮新鲜的,呵呵,看看是怎么玩的吧。
我现在要把数组里含有字母'a'的元素全部找出来,如果没有sort(),似乎只能用遍历了,遍历的效率…那个叫恐怖啊!!具体做法如下:

<script type="text/javascript">
<!--
 var testArray=['df', 'rtr', 'wy', 'dafd', 'dfs', 'wefa', 'tyr', 'rty', 'rty', 'ryt', 'afds', 'wer', 'te'];
 testArray.sort(function(a,b){return a.indexOf('a')==-1?1:-1;});
 alert(testArray);
//-->
</script>

这样就把数组中含有字母'a'的元素全部放到数组前面啦,再经过一些简单的处理,就可以输出搜索结果了。

posted on 2006-04-03 14:54 汪杰 阅读(187) 评论(0)  编辑 收藏 引用 所属分类: javascripthengxing网站js
只有注册用户登录后才能发表评论。

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 459282
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜