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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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>

参考技术A 简单的写,
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("没有出现重复项");

JS 字符串转换成数组,再判断某个字符串是不是存在数组中,如果存在删除,不存在添加

假如有个字符串是:var aa = 12,123,1234 将字符串转换成数组。。。
var bb = 12 ; 判断bb是否在数组中存在,如果存在添加到数组中,如果不在,从数组中删除。。。

求JS代码。。。跪谢。。。

参考技术A var aa = '12,123,1234';
var bb = '12';

var arr = eval('[' + aa + ']');
if($.inArray(bb,arr)>-1)
    //存在,从数组中删除
    arr = $.grep(arr,function(n,i)return n == bb;,true);
else
    //不存在,添加
    arr.push(bb);

PS:"如果存在添加到数组中,如果不在,从数组中删除。。。",这一句让我很凌乱!

追问

额,弱弱的问句。。。
再把数组转换成字符串这么写呢。。。
格式是 123,1234

追答var str = arr.join(",");

参考技术B 不存在添加?添加到哪?头?尾?
这用数组?
if(aa.indexOf('12')!=-1)
aa=aa.replace('12','');

else
aa+='12';

追问

如果aa=123,12,1234;
那aa=aa.replace('12',''); 他就会认为是123里的12

最后aa就等于3,12,1234

追答

if(aa.indexOf('12')!=-1)
aa=aa.replace('/12/g','');

else
aa+='12';

追问

aa=aa.replace('/12/g','');

这样的话就等于把aa=123,12,1234; 里所有的12都去掉了。。。

结果是3,,34!!!....

我期望的是aa=123,1234;

追答

....早说啊。。。。。
var aa='12,123,1234'
var re=aa.split(',');

for(var i in re)

if(re[i]=='12')

re.splice(i,1)





aa=re.join(',')
alert(aa);

本回答被提问者采纳

以上是关于关于JS如何判断一个字符串中存在多少个相同的数据?的主要内容,如果未能解决你的问题,请参考以下文章

js 怎么计算一个字符串中包含多少个表情

关于 Facebook 应用程序 ID 和应用程序密码以及我在多少个单独的“应用程序”上使用相同的应用程序 ID/密码,是不是存在任何数量问题?

PHP如何检查一个数组内是不是存在指定元素

如何判断字符串中是不是存在特殊符号?

如何使用matlab获知某个字符是不是存在于一个字符集合内?

Java求助:如何判断某对象是不是存在?如果不存在,创建该对象