如何将重复的数组合并?
例如:
--------------------------------
var test = new Array();
test[0] = '123;
test[1] = '123;
test[2] = '123;
--------------------------------
合并后想的到的结果是 test[0] = '123' (即把重复的数组合并),JScript本身是否有这类函数?或者有其它比较高效的办法吗?
问题点数:0、回复次数:10Top
1 楼wangxj0600(闭门思过中)回复于 2003-02-02 14:06:20 得分 0
js里面没有这样的函数。Top
2 楼wangxj0600(闭门思过中)回复于 2003-02-02 14:08:04 得分 0
大概用两个循环是最好的方法。Top
3 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-02 16:06:52 得分 0
这样行不?
====================================
<SCRIPT>
function arrange(arr)
{//注意arr 为引用,直接操作实参
arr.sort();//根据ASC重牌
var ptr=0;
while(ptr<arr.length)
if(arr[ptr]==arr[ptr+1])arr.splice(ptr,1);//当越界时,js数组返回undefined,从而结束循环
else ptr++
}
//测试...
var test1=[1,2,3,3,2,4,6,5,4,6,1,2]
document.write("原数组:"+test1+">>>>>> ")
arrange(test1)
document.write(test1+"<BR><BR>")
var test2=["function","JavaScript","ptr","while","function","splice","sort","ptr","sort","JavaScript","JavaScript","splice"]
document.write("原数组:"+test2+">>>>>> ")
arrange(test2)
document.write(test2+"<BR><BR>")
</SCRIPT>Top
4 楼imafool(中正仁和)回复于 2003-02-04 21:56:25 得分 0
先排序岂不……还是不先排吧。Top
5 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-04 22:57:04 得分 0
因为楼主要求合并相同项,势必改变数祖长度,于是元素顺序也被打乱,所以排序不会影响预期效果。
如果你是按特定规则排列好的,你可以用sortfunction来根据逻辑关系排序,Top
6 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-04 22:59:13 得分 0
楼上是不是楼主的马甲?
Top
7 楼abent(阿木一头)回复于 2003-02-07 05:42:28 得分 0
llrock(百乐宝)用了JS版本 5.5的方法。Top
8 楼net_lover(【孟子E章】)回复于 2003-02-07 17:52:09 得分 0
<script>
var a =new Array("AAAA","B","A","A","B","F","D","C","A","B","A","A","B","C")
for (var i=0;i<a.length;i++)
{
for(j=i+1;j<a.length;j++)
{
if(a[i]==a[j]) a[i]=null
}
}
var m = 0,ok = new Array()
for(k=0;k<a.length;k++)
{
if(a[k])ok[m++] = a[k]
}
alert(ok)
</script>
Top
9 楼imafool(中正仁和)回复于 2003-02-08 21:50:34 得分 0
建议:发现重复后弹出当前项,这在JScript内置支持的.你可以参考5.6文档,写出来也很容易的.Top
10 楼xuzuning(唠叨)回复于 2003-02-09 09:27:22 得分 0
另一种写法,有点小毛病。:(
<script>
var test=[1,2,3,3,"abc",4,6,5,4,6,1,2];
document.write("原数组:"+test+"<br>");
var ar = new Array();
for(v in test)
ar[test[v]] = v;
document.write("工作数组:"+ar+"<br>");
var test = new Array();
for(v in ar) {
test[ar[v]] = v;
}
document.write("原数组:"+test+"<br>");
</script>
Top




