var uh="a"; 
var dh="b";
var lw="c";
var rw="d";我想判断一下这些变量都哪些相同?求高人给个最优化的方法。或者给个思路也行。
目前我只能用一堆的if来判断。

解决方案 »

  1.   

    将变量放入到array中,在通过array比对
      

  2.   


    <script>
    var obj={};
    var wantArr=[];  
    var arr=['a','b','c','d','a','d'];  
    for(var i=0;i<arr.length;i++){  
      obj[arr[i]]=arr[i];  
    }  
    for(var pro in obj){  
      wantArr.push(obj[pro])  
    }  
    alert(wantArr)  
    </script>
      

  3.   


    我改一下你也许就明白了:
    <script>
    var obj=[];//创建一个空数组,用来装填关联数组
    var wantArr=[];  //创建一个空数组,用来保存我们要的结果
    var arr=['a','b','c','d','a','d'];  //要剔除重复元素的源数组
    for(var i=0;i<arr.length;i++){  
      //关键在这里:用arr中的每个元素值做关联数组的“关联名”;同时也用它做关联值!
      //循环中,如果遇到arr的某个与前面重复的元素时,它将覆盖那个“关联名”元素!等于剔除了重复元素
      obj[arr[i]]=arr[i];  
    }  
    //其实到了这里我们已经得到了想要的结果obj[];但由于它是关联数组,取值、运算不很方便,所以就多做一些工作,把它变换为纯数组wantArr[]:
    for(var pro in obj){  
      wantArr.push(obj[pro])  
    }  
    alert(wantArr)  
    </script>
      

  4.   

    如果有400个需要剔除重复元素的变量,需要多少个if....else if....呢?
    4000个呢?呵呵
      

  5.   


    人家已经把方法与思路给你了,接下来你应该自己去分析和修改里面的逻辑。
    只是照抄别人的代码,你永远都不会进步的。BTW:4楼的方法适用于所有需要检查的对象都是字符串的情况,如果要更加的严谨,还是需要借助数组的遍历。
      

  6.   

    12楼是个明白人。我本不想进来了,但看到楼主没个主心骨的样子,还是忍不住多贴两句代码吧,呵呵:
    <script>
    var obj=[];
    var wantArr=[];
    var arr=['a','b','b','d'];  //要剔除重复元素的源数组
    for(var i=0;i<arr.length;i++){
      if(!obj[arr[i]])  obj[arr[i]]=arr[i];  
      else wantArr.push(arr[i])
    }  
    alert("重复项:"+wantArr)  
    </script>
    楼主,建议你以后多看看12楼的这句话:人家已经把方法与思路给你了,接下来你应该自己去分析和修改里面的逻辑。只是照抄别人的代码,你永远都不会进步的。呵呵
      

  7.   

    只能说,你5楼一句话,我在7楼颠颠儿的给你一行行的注释全成了对牛弹琴了-----你把14楼的代码和4楼代码仔细比较一下,看看改动大不大?看完了你在说“貌似4楼没自己看我说的问题。不过还是谢谢4楼”那样的结论吧;既如此,那你们就继续你们的那一堆if去吧,哈哈。闪ing~~~ 
      

  8.   

    说实话,上面回复都不切题。
    因为,LZ是问:“我想判断一下这些变量都哪些相同”,而不是判断那些变量的相同。也就是说 ——
    有定义: var uh="a",dh="b",lw="c",rw="d",dr="a",hk="c";
    请 问:变量uh、dh、lw、rw、dr、hk中有那些相同,
    不是问:"a"、"b"、"c"、"d"、"a"、"c"中有那些相同。