<script>
var obj={},wantArr=[]; 
var b="世界杯,世界杯特别投注,英超,英超特别投注,意甲,意甲特别投注,西甲,西甲特别投注,德甲联赛";
var a="英超,世界杯,意甲,世界杯特别投注,德甲特别投注,欧洲冠军杯,英超特别投注,德甲联赛,西甲,意甲特别投注";var s=b+','+a, arr=s.split(',');for(var i=0;i<arr.length;i++){  
  obj[arr]=arr;  

  
for(var x in obj){ wantArr.push(obj[x])}  document.write("你的标准:"+b+"<br>程序处理:"+wantArr)  
</script>
我要的是a为传入的值,b为标准。a中如果没有b标准的,就少去一个,不用显示出来 比如a转入值进去后,没有b标准中的西甲特别投注 在程序处理中就不用显示出来,而多余出来的能不能放到一个字符串中后再和处理后的标准合并起来 得到新的程序处理。

解决方案 »

  1.   


    <script>
    var b="世界杯,世界杯特别投注,英超,英超特别投注,意甲,意甲特别投注,西甲,西甲特别投注,德甲联赛";
    var a="英超,世界杯,意甲,世界杯特别投注,德甲特别投注,欧洲冠军杯,英超特别投注,德甲联赛,西甲,意甲特别投注";
    var obb = Function("return {'" + b.replace(/,/g, "':1,'") + "':1}")();
    var oba = Function("return {'" + a.replace(/,/g, "':1,'") + "':1}")();
    var arr = [];
    for (var o in obb) oba[o] && arr.push(o);
    for (var o in oba) obb[o] || arr.push(o);
    alert(arr.join(","))
    </script>
      

  2.   


    <script>
    String.prototype.zhurx=function(b){
      if(!b||b=='undefined'||b==''){alert('标准字串缺失!字串未作处理。');return [this,'','']}  var arrTemp=[],arrT=[],objWait=[];  //将待比较的字串装入关联数组数组arrTemp;
      arrT=this.split(',');  
      for(var i=0;i<arrT.length;i++){arrTemp[arrT[i]]=arrT[i]; }
     
     //检查标准字串中哪些是不包含在a中,压入待处理数组;同时从标准字串数组删除
      arrT=b.split(',');
      for(i=arrT.length-1;i>=0;i--){ 
        if(!arrTemp[arrT[i]]){objWait[arrT[i]]=arrT[i];  arrT.splice(i,1);  }
      }
      /*---------------------------------------------------------------------*/
      var s=arrT.join(',')+','+this; //将新标与原串组合
      var obj=[], arr=s.split(',');
      var resultArr=[],arrWait=[];
      for(var i=0;i<arr.length;i++){ obj[arr[i]]=arr[i];} 
      //将得到结果的关联数组obj转换为数字下标数组resultArr
      for(var x in obj){ resultArr.push(obj[x]) } 
      // 处理待处理的字串
      for(var x in objWait){arrWait.push(objWait[x]) }
      //组合新标字串
      var strNewSTD=arrT.join(',')+","+arrWait.join(',')
      //返回三元素的数组 0--结果  1--本次的待处理字串  2--新标(估计够你用了)
      return [resultArr,arrWait,strNewSTD]
    }//调用示例:
    var strSTD="世界杯,世界杯特别投注,英超,英超特别投注,意甲,意甲特别投注,西甲,西甲特别投注,德甲联赛";
    var strSource="英超,世界杯,意甲,世界杯特别投注,德甲特别投注,欧洲冠军杯,英超特别投注,德甲联赛,西甲,意甲特别投注";
    var ar=strSource.zhurx(strSTD)
    document.write("<br>结果:"+ar[0]);
    document.write("<br>本次待理:"+ar[1]);
    document.write("<br>新标:"+ar[2]+"<br>") 
    </script>我将你的需求封装成了一个字串的原型zhurx(该名可以自己任意更换)。同时代码做了详细注释。希望你以后可以增改删,不要再找我了,哈
      

  3.   

    我是JS新手,想法比较简单,用正则做减法,然后拼接字符串,勉强也能用。<script language="javascript">
    var a="世界杯,世界杯特别投注,英超,英超特别投注,意甲,意甲特别投注,西甲,西甲特别投注,德甲联赛";
    var b="英超,世界杯,意甲,世界杯特别投注,德甲特别投注,欧洲冠军杯,英超特别投注,德甲联赛,西甲,意甲特别投注";
    var str1=a;
    var str2=b;
    var reg1=/世界杯(?!特别投注)|世界杯特别投注|英超(?!特别投注)|英超特别投注|意甲(?!特别投注)|意甲特别投注|西甲(?!特别投注)|西甲特别投注|德甲联赛/g;
    var reg2=/英超(?!特别投注)|世界杯(?!特别投注)|意甲(?!特别投注)|世界杯特别投注|德甲特别投注|欧洲冠军杯|英超特别投注|德甲联赛|西甲(?!特别投注)|意甲特别投注/g;
    function regreplace(reg,str)
    {
    for (var i=0;i<str.length;i++)
    return str.replace(reg,"");
    }
    str1=regreplace(reg2,str1);
    str2=regreplace(reg1,str2);
    var arr1=str1.split(",");
    var arr2=str2.split(",");
    function deletearrelement(arr,element)
    {
    var arrnul=[];
    for (var i=0;i<arr.length;i++)
    if(arr[i]!=element)
    arrnul.push(arr[i]);
    return arrnul;
    }
    var arr11=deletearrelement(arr1,"");
    var arr22=deletearrelement(arr2,"");
    var aa=a.split(",");
    var bb=b.split(",");
    for (var k=0;k<arr11.length;k++)
    var aafinal=deletearrelement(aa,arr11[k]);
    var final=aafinal+","+arr22;
    alert(final);
    </script> 
      

  4.   

    8楼:用正则筛选,很妙,呵呵。
    1、先把b中有、a中没有的选出来,成为新标保存起来;
    2、再把a中不包含新标的部分选出来,然后附加到新标字串后就OK了。很妙的思路,8楼,把它做出来吧,呵呵
      

  5.   

    说错了,应该是:
    1、先把b中有、a中没有的选出来,保存为aaa;
    2、b中剩下的部分作为新标保存起来;
    2、再把a中不包含新标的部分选出来,然后附加到新标字串后就OK了。