关于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循环依次判断每个字符是否有重复:
<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>
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代码。。。跪谢。。。
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
这用数组?
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如何判断一个字符串中存在多少个相同的数据?的主要内容,如果未能解决你的问题,请参考以下文章
关于 Facebook 应用程序 ID 和应用程序密码以及我在多少个单独的“应用程序”上使用相同的应用程序 ID/密码,是不是存在任何数量问题?