js 如何拿到两个字符串不相等的部分

例如
var str1 = "1,2,3,4,5";
var str2 = "1,2,3";
最终的结果是我想拿到内容为“4,5” 该怎么做?

/*
A∪B - ï¼ˆA âˆ© B) 
*/

function getUniqueSet( setA, setB ){
var temp = {};
for( var i = 0, len = setA.length; i < len ; i++ ){
temp[ setA[i] ] = 0;
}
for( var j = 0, len = setB.length; j < len ; j++ ){
if( typeof temp[ setB[j] ] === 'undefined' ){
temp[ setB[j] ] = 0;
}else{
temp[ setB[j] ]++;
}
}
//output
var ret = [];
for( var item in temp ){
!temp[item] && ret.push( item );
}
return ret;
}

//test
var a = '1,3,5,6'.split(',');
var b = '1,2,4,6'.split(',');

getUniqueSet( a, b );
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-20
                  var str1 = "1,2,3,4,5";
                  var str2 = "1,2,3";
                  var index = str1.indexOf(str2);
                  var diff = str1.substr(index + str2.length + 1);
                  alert(diff);

追问

要是
var str1 = "1,2,3,4,5,6,7,8";
var str2 = "1,3,4,7,8";
呢 查询两个字符不相同的内容

追答

你这不是比字符串的吧。。是要比逗号分隔的数组吧?
你这个需求太不明确了,比如下面的
var str1 = "1,2,2,2,3,4,5,6,7,8"; var str2 = "1,2,3,4,7,8";
你的预期结果是什么?

追问

是字符串 接收的内容 已经拼成这种格式了 只是比较取不同的值 以逗号区分 不能因为 类似于 290 291 把29过滤掉 该怎么弄?

追答

如果是29012 29022 ,你想得到的结果是什么?

追问

好比$str1 = "290,291,295";
$str2 = "290,291,292,293";
我其实最终的结果是 想拿到 “292,293,295” 这样一个内容

追答var str1 = "290,291,295";
var str2 = "290,291,292,293,290";
var arr1 = str1.split(",");
var arr2 = str2.split(",");
var result = [];
for (var i = arr1.length - 1; i >= 0; i--) {
if (arr2.indexOf(arr1[i]) < 0) {
    result.push(arr1[i]);
}
}
for (var i = arr2.length - 1; i >= 0; i--) {
if (arr1.indexOf(arr2[i]) < 0) {
    result.push(arr2[i]);
}
}
alert(result.join(","));

是这种结果吗?

追问

if (arr2.indexOf(arr1[i]) < 0) {
result.push(arr1[i]);
}
这句话 为什么判断这里 除了firefox 其他浏览器都不认啊

第2个回答  2013-12-20
这个如果格式是你这样你那么像把字符串变成数组,这样两个数组 进行对比,然后拿出不相同的元素,再把拿出来的元素数组变成字符串就好了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网