删除二维数组中相同的数组元素

作者在 2008-03-28 10:34:26 发布以下内容

昨晚在论坛上遇到这样的一个问题,如题!
以前我都没有遇到过这样的问题,也许是自己懒吧
非常感谢那位楼主提出的那个问题,今天我终于解决了,全凭自己的思路解决的,所以觉得挺开心的,所以就来跟大家分享一下啦
昨晚刚看这道问题的时候,我觉得非常easy,甚至有点不屑一顾,于是我就开始写代码想来解决楼主的这个问题了。
但是当我写好代码调试的时候,那些结果总是不堪入目,后来用过不少方法去试验,但是都不是想要的结果,这才发现原来我一直都没有遇到过这样的问题,以前倒是遇到过删除列表项中重复的选项的,但是列表框的起码也有个Remove()方法来操作。于是我就翻阅Javascript的资料,OH NO!原来Javascript的数组没有删除数组元素的方法。于是,自己就写代码,但是可能开始时候自己的思路就错了吧,于是就一直将错就错,昨晚直到错到自己都有点灰心了,于是当时就想唯有等待改天看高手如何的解答了。
还好今早我一早醒了突然思路就清晰了!看来算法不应该在电脑前去思考,呵呵。]
希望大家以后多点来关注,多点来交流。
码如下:
<html>
<script>
/*
  delPointElement(arr,index)函数用来删除数组中指定的元素,
  具体可参考《数据结构》顺序表的删除元素算法
*/
function delPointElement(arr,index)
{
  for(i=index;i<arr.length-1;i++)
  {
    arr[i]=arr[i+1];
  }
  arr.length=arr.length-1;
}
var st=[1,2,4,5,6,7,7,8,8,2,3,4];
var s2=new Array(); //存储数组中相同元素的下标位置
//下面的双重循环遍历数组用来获取数组中相同元素的下标位置
for(i=0;i<st.length;i++)
{
  for(j=i+1;j<st.length;j++)
  {
     if(st[j]==st[i])
     {
       s2.push(j);
     }
  }
}
//将原来数组中相同的元素值设为null
for(i=0;i<s2.length;i++)
{
  st[s2[i]]=null;
}
//下面是一个递归函数用来删除数组中所有值为null的元素
function Recursion(count)
{
  if(count<=0)
  {
    return;
  }
  for(i=0;i<count;i++)
  {
    if(st[i]==null)
    {
      delPointElement(st,i);
    }
  }
  Recursion(count-1);
}
Recursion(st.length)
//输出最后的结果
for(i=0;i<st.length;i++)
{
  document.write(st[i]);
}
</script>
</html>

Javascript | 阅读 5736 次
文章评论,共0条
游客请输入验证码
最新评论