例如
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 );
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 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(","));
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 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
这个如果格式是你这样你那么像把字符串变成数组,这样两个数组 进行对比,然后拿出不相同的元素,再把拿出来的元素数组变成字符串就好了