关于JS如何判断一个字符串中存在多少个相同的数据?

假设有字符串如下所示: var str=" 1,2,5,2 ";
要求, JS 判断 str 中 2出现了2次 的写法。

在假设,字符串改成 var str="1,2,1,2" ;
要求 ,得到 1出现了2次 , 2出现了2次

在假设 字符串如下: var str="1,2,3,4 “;
则提示 str中没有存在重复项

求JS如何实现 ?

    第一种实现方式,直接用“,”拆分字串为数组,用for循环依次判断每个字符是否有重复:

    <html>
      <head>
        <script language="javascript">
          function CheckRepeat(){
             var data = document.getElementById("txtData").value;
             
             var r = getRepeatData(data);
             alert(r);
          }
          
          function getRepeatData(input){
             var ary = input.split(",");
             
             var rdata = {};
             for(var i in ary){
                var c = ary[i];
                rdata[c] ? (rdata[c]++) : (rdata[c]= 1) 
             }
             
             var strResult = "";
             for(var k in rdata){
               if(rdata[k] > 1)
                 strResult += k + "出现了" + rdata[k] + "次,";
             } 
             strResult && (strResult.replace(/,$/,""));
             return strResult ? strResult : "字串(\"" + input + "\")中没有重复项!" 
          }
        </script>
      </head>
      <body >
        <input type="text" id="txtData" size="80" value="1,2,3,4,1,5,2,6,1,7,2"/>
        <button onclick="CheckRepeat();">检查重复</button>
      </body>
    </html>

    第二种方式,用正则表达式实现:

    <html>
      <head>
        <script language="javascript">
          function CheckRepeat(){
             var data = document.getElementById("txtData").value;
             
             var r = getRepeatData(data);
             alert(r);
          }
          
          function getRepeatData(input){
             var temp = "," + input + ",";
             var reg = /([^,]+)(?=.*\1,)/g;
             
             var result = [];
             var exsits = {};
             while(reg.exec(temp)){
               var c = RegExp.$1;
               if(!exsits[c]){
                 exsits[c] = true;
                 var count = temp.split("," + c + ",").length - 1;
                 result.push(c + "出现了" + count + "次");
               }
             }
             return result.length ? result.join(",") : "字串(\"" + input + "\")中没有重复项!" ; 
          }
        </script>
      </head>
      <body >
        <input type="text" id="txtData" size="80" value="1,2,3,4,1,5,2,6,1,7,2"/>
        <button onclick="CheckRepeat();">检查重复</button>
      </body>
    </html>

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-15
简单的写,
function a(){
var str="1,2,1,2";
var strAll = str.split(",");
var b=0;
for(var i=0;i<strAll.length;i++){
var a=-1;
for(var j=0;j<strAll.length;j++){
if(strAll[i]==strAll[j]){
a++;
}
if(a==1){
b++;
}
if(a>1){
alert(strAll[i]+"出现了"+a+"次");
}
}
}
if(b==0){
alert("没有出现重复项");
}
}本回答被网友采纳
相似回答