jquery 多个字符串去重 20
如题,比如字符串:<ul><li>aaa<li/><li>bbb<li/><li>ccc<li/><li>ddd<li/><li>aaa<li/><li>bbb<li/>...
如题,比如字符串:
<ul>
<li>aaa<li/>
<li>bbb<li/>
<li>ccc<li/>
<li>ddd<li/>
<li>aaa<li/>
<li>bbb<li/>
<li>ccc<li/>
<li>ddd<li/>
<li>123<li/>
<li>123<li/>
</ul>
以下最终是我想保留的:
<ul>
<li>aaa<li/>
<li>bbb<li/>
<li>ccc<li/>
<li>ddd<li/>
<li>123<li/>
</ul>
这些我是用for循环出来的字符串,我想去掉其中重复的,该怎么处理?有没有大神帮帮我啊,数组去重我倒是会,可是像这种字符串去重该怎么来做呢?
var result = str.match(patten);
for(i in result){ //result是从一段富文本里面提取出来的
patten.lastIndex = 0;
reslut_a = patten.exec(result[i]);
array_count = reslut_a[2].split('、');
for(j in array_count){
//我想在这里处理去重
document.write(array_count[j]);
}
}
这只是其中一小段代码,我想拿到 array_count[j] 这个之后去重,我该怎么来处理啊? 展开
<ul>
<li>aaa<li/>
<li>bbb<li/>
<li>ccc<li/>
<li>ddd<li/>
<li>aaa<li/>
<li>bbb<li/>
<li>ccc<li/>
<li>ddd<li/>
<li>123<li/>
<li>123<li/>
</ul>
以下最终是我想保留的:
<ul>
<li>aaa<li/>
<li>bbb<li/>
<li>ccc<li/>
<li>ddd<li/>
<li>123<li/>
</ul>
这些我是用for循环出来的字符串,我想去掉其中重复的,该怎么处理?有没有大神帮帮我啊,数组去重我倒是会,可是像这种字符串去重该怎么来做呢?
var result = str.match(patten);
for(i in result){ //result是从一段富文本里面提取出来的
patten.lastIndex = 0;
reslut_a = patten.exec(result[i]);
array_count = reslut_a[2].split('、');
for(j in array_count){
//我想在这里处理去重
document.write(array_count[j]);
}
}
这只是其中一小段代码,我想拿到 array_count[j] 这个之后去重,我该怎么来处理啊? 展开
展开全部
方法1,用字符串截取substring()和字符位置查询indexOf();
string.substring(start,end) 从string中截取一段字符串。
start:截取开始位置。
end:截取结束位置。
string.indexOf(findstr),查找指定的字符串在string中的位置
findstr:要找的字符串
var str1="aaa@hotmail.com";//要截取@到.之间的内容
var str2=str1.substring(str1.indexOf("@")+1,str1.indexOf("."));
console.log(str2);
方法2,用正则表达式
[\@]匹配@
[\.]匹配.
.匹配任意字符
+匹配前面内容一次或多次
*匹配签名内容0次或多次
()中的内容可以被替换为$1,就是我们要找的部分
$1,$2,……可以匹配正则式中(),按顺序编号第一个括号为$1,第二个位$2,以此类推
var str1="aaa@hotmail.com";//要截取@到.之间的内容
var reg=new RegExp('.*[\@]+(.*)[\.]+.*');
var str2=str1.replace(reg,"$1");
console.log(str2);
string.substring(start,end) 从string中截取一段字符串。
start:截取开始位置。
end:截取结束位置。
string.indexOf(findstr),查找指定的字符串在string中的位置
findstr:要找的字符串
var str1="aaa@hotmail.com";//要截取@到.之间的内容
var str2=str1.substring(str1.indexOf("@")+1,str1.indexOf("."));
console.log(str2);
方法2,用正则表达式
[\@]匹配@
[\.]匹配.
.匹配任意字符
+匹配前面内容一次或多次
*匹配签名内容0次或多次
()中的内容可以被替换为$1,就是我们要找的部分
$1,$2,……可以匹配正则式中(),按顺序编号第一个括号为$1,第二个位$2,以此类推
var str1="aaa@hotmail.com";//要截取@到.之间的内容
var reg=new RegExp('.*[\@]+(.*)[\.]+.*');
var str2=str1.replace(reg,"$1");
console.log(str2);
展开全部
var result = str.match(patten);
//改为这样的for循环、因为那样的有浏览器不兼容。。。
for(var i=0;i<result.length;i++){
patten.lastIndex = 0;
reslut_a = patten.exec(result[i]);
array_count = reslut_a[2].split('、');
var map={};
for(var j=0;j<array_count.length;j++){
var aj=array_count[j];
//如果map中不存在这个字符串,就输出,然后再添加
//以达到去重的效果
if(null == map[aj]){
document.write(aj);
map[aj]=1;
}
}
}
更多追问追答
追问
你好,我按照你说的改了下,报length of null错呢
追答
那就看你自己写的代码是不是调用了null对象了。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询