var arr1=["aaa","b","cc"];
var arr2=["a","aaab","c","d"];
var arr3=["a","ab","asc","d","e"];
var aa = arr1.concat(arr2,arr3).sort().join(";");
bb = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,""); //去掉所有重复的,如果在数组多次出现,则去掉
cc = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,"$1;"); //去掉重复,如果多次出现,则去掉多余的,留唯一的一个。
console.log(bb);
console.log(cc);自己试试吧
var arr2=["a","aaab","c","d"];
var arr3=["a","ab","asc","d","e"];
var aa = arr1.concat(arr2,arr3).sort().join(";");
bb = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,""); //去掉所有重复的,如果在数组多次出现,则去掉
cc = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,"$1;"); //去掉重复,如果多次出现,则去掉多余的,留唯一的一个。
console.log(bb);
console.log(cc);自己试试吧
var a = [ "a" , "b" , "c" ],
b = [ "b" , "c" , "d" ],
c = [ "c" , "d" , "e" ],
_a = a.concat( b ).concat( c ),
_hash = {},
_new = [];
for( var i = _a.length; i--; ){
if( !_hash[ _a[ i ] ] ){
_hash[ _a[ i ] ] = 1;
_new.push( _a[ i ] );
};
};
return _new;
我的想法是先把字符串拼到一起然后再转化成数组 通过把新的数组去重实现
现在是问题是 alert 弹出的值是我想要的 我不知道怎么样把弹出的值整合到一起
<script>
function nosame()
{
var total=document.getElementById("total").value;
var userArr=total.split(",");
for(var i=0;i<userArr.length;i++)
{
for(var j=0;j<userArr.length;j++)
{
if(userArr[i]==userArr[j]&&i!=j)
{
userArr.splice(i,1);
}
}
alert(userArr[i]);
}
}
</script>
var arr2=["a","aaab","c","d"];
var arr3=["a","ab","asc","d","e"];
var aa = arr1.concat(arr2,arr3).sort().join(";");
bb = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,""); //去掉所有重复的,如果在数组多次出现,则去掉
cc = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,"$1;"); //去掉重复,如果多次出现,则去掉多余的,留唯一的一个。
alert(bb);
alert(cc);
//上面的还都是字符串,如果要转成数组,用split就行了。
bb = bb.split(";");
cc = cc.split(";");
alert(bb); // 这里是数组
alert(cc); // 这里是数组直接这样测试,不出东西吗?如果是你获取的数组使用这样的方法,有错误的话,就先看看获得的数组是怎么样的。你如果是获取的字符串,就要改一下代码,写成这样的。
var arr1='aaa,b,cc';
var arr2='a,aaab,c,d';
var arr3='a,ab,asc,d,e';
var aa = arr1.split(",").concat(arr2.split(","),arr3.split(",")).sort().join(";");
bb = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,""); //去掉所有重复的,如果在数组多次出现,则去掉
cc = aa.replace(/([^\;]*)(\;\1)+(?:$|\;)/g,"$1;"); //去掉重复,如果多次出现,则去掉多余的,留唯一的一个。
alert(bb);
alert(cc);
//上面的还都是字符串,如果要转成数组,用split就行了。
bb = bb.split(";");
cc = cc.split(";");
alert(bb); // 这里是数组
alert(cc); // 这里是数组
cc = aa.replace(/(^|\;)([^\;]*)(\;\2)+(?:$|\;)/g,"$1$2;");是的,之前没有太仔细看,这样就可以了。
var arr2='admin,wangh,zhangjj';
var arr3='admin,wangh,zhangjj';
bb = aa.replace(/((?:^|\;)([^\;]*)(?:$|\;))((?:^|\;)(\2)(?:$|\;))+/g,"");
cc = aa.replace(/((?:^|\;)([^\;]*)(?:$|\;))((?:^|\;)(\2)(?:$|\;))+/g,"$1").replace(/^\;+|\;+$/,"");构造一种特殊的结构吧,暂时只能想到这个了!!!
/// <summary>
/// 排除数据中的重复项
/// </summary>
/// <param name="arr">目标数组</param>
/// <returns>操作后的新数组</returns>
var keep={},
res=[];
for(i=0;i<array.length;i++){
if(!keep[array[i]]){
keep[array[i]]=!0;
res.push(array[i]);
};
};
return res;
};
var str1='a,b,c',
str2='a,b,c,d,e',
str3='a,b,c,d,e'
arr=(str1+','+str2+','+str3).split(',')
res=unique(arr);
//如果你需要的是数组类型,res就是你要的,如果你需要的字符串类型,res.join(',')就是你要的
alert(res.join(','))
解决思路是这样:先把前2个数组去重合并。合并后的字符串跟第三个数组去重合并。因为有时候第二、三个数组会为空加了些判断。<script>
function nosame()
{
var sjname=document.getElementById("auditor1").value;
var csname=document.getElementById("auditor2").value;
var msname=document.getElementById("auditor").value;
var sjArr=sjname.split(",");
var csArr=csname.split(",");
var msArr=msname.split(",");
if(csname==""&&msname=="")
{
document.getElementById("total").value=sjname;
}
if(csname!="")
{
var obj = new Object();
for(var i =0;i<sjArr.length;i++){
obj[sjArr[i]] = sjArr[i];
}
for(var i =0;i<csArr.length;i++){
obj[csArr[i]] = csArr[i];
}
var arr = new Array();
var i = 0;
for(var per in obj){
arr[i++] = obj[per];
}
document.getElementById("total").value=arr;
}
if(csname!="")
{
var obj = new Object();
for(var i =0;i<sjArr.length;i++){
obj[sjArr[i]] = sjArr[i];
}
for(var i =0;i<csArr.length;i++){
obj[csArr[i]] = csArr[i];
}
var arr = new Array();
var i = 0;
for(var per in obj){
arr[i++] = obj[per];
}
document.getElementById("total").value=arr;
}
if(msname!="")
{
var total=document.getElementById("total").value;
var toArr=total.split(",");
var obj = new Object();
for(var i =0;i<toArr.length;i++){
obj[toArr[i]] = toArr[i];
}
for(var i =0;i<msArr.length;i++){
obj[msArr[i]] = msArr[i];
}
var arr = new Array();
var i = 0;
for(var per in obj){
arr[i++] = obj[per];
}
document.getElementById("total").value=arr;
}}
</script>