现在有两个数组,
var getuserInfo = ["a","b","c"];
var userInfo = ["a","f","e","g"];
var index = 0;
for(var s in getuserInfo){
for(var x in userInfo){
if(getuserInfo[ 2 * s]!=userInfo[2 * x]){
userInfo[index++] = getuserInfo[2 * s];
userInfo[index++] = getuserInfo[2 * s + 1];
}
}
  }
现在可以判断出第一个不相同的值,比如说:getuserInfo 中有 'b' ,userInfo中没有,那么getuserInfo将' b'赋给userInfo后这个循环就结束了,有什么办法可以让它一直循环下去,直到将getuserInfo中所有与userInfo不相同的值赋给userInfo为止呢? 在线等,800里加急javascript

解决方案 »

  1.   

    该问题已经解决,现在的问题是,上面说的两个数组都是二维数组(一个是ID,一个是NAME;ID,NAME是连在一起的,如果按照现在的方法取出来的话有可能行不通,因为NAME有可能会是重复的,必须保证每一个ID对应一个NAME完整的取出来),有没有童鞋做过类似的啊
      

  2.   


    var getuserInfo = ["a","b","c"];
    var userInfo = ["a","b","f","e","g"];
    var flag ;
    for(var i = 0 ; i < getuserInfo.length ; ){
    flag = false;
    for(var j = 0 ; j < userInfo.length ;  ){
    if(userInfo[j]==getuserInfo[i]){
    userInfo.splice(j , 1);
    getuserInfo.splice(i , 1);
    flag = true;
    }else{
    ++j;
    }
    }
    if(!flag)
    ++i;
    }
    console.log(getuserInfo.concat(userInfo));
      

  3.   

    借花献佛var getuserInfo = ["a","b","c",["e","f"]];
    var userInfo = ["a","b","f","e","g"];
    var testInfo = [];
    var flag ;
    for(var i = 0 ; i < getuserInfo.length ;i++ ){
       for(var count =0;count<getuserInfo[i].length;count++) 
       { 
           testInfo[getuserInfo[i][count]]= getuserInfo[i][count];
       }
     }
     for(var j =0 ;j<userInfo.length;j++)
    {
        if(testInfo[userInfo[j]])
        {
             testInfo[userInfo[j]] =null;
         }
        else
        {
             testInfo[userInfo[j]] = userInfo[j];
         }
    }
    console.log(testInfo.join(","));
      

  4.   

    第二个忘变量二维数组了var getuserInfo = ["a","b","c",["e","f"]];
    var userInfo = ["a","b","f","e","g"];
    var testInfo = [];for(var i = 0 ; i < getuserInfo.length ;i++ ){
       for(var count =0;count<getuserInfo[i].length;count++) 
       { 
           testInfo[getuserInfo[i][count]]= getuserInfo[i][count];
       }
     }
     for(var j =0 ;j<userInfo.length;j++)
    {
        for(var index =0;index<userInfo[j].length;index++ )
        if(testInfo[userInfo[j][index]])
        {
             testInfo[userInfo[j][index]] =null;
         }
        else
        {
             testInfo[userInfo[j][index]] = userInfo[j][index];
         }
    }
    console.log(testInfo.join(","));
      

  5.   

    var getuserInfo = ["a","b","c",["e","f"]];
    var userInfo = ["a","b","f","e","g"];
    userInfo=(getuserInfo +userInfo+"").match(/(\b\w+(?:\w+)?\b)(?!.*,\1\b)/g);
    alert(userInfo );
      

  6.   

    这位仁兄真是把正则表达式用到了炉火纯青的地步啊,呵呵,牛;
    你这样我试了下,还有个小问题, 比如上面的数组:getuserInfo = ["a","b","c"] userInfo = ["d","e"]
    这样得到的结果是userInfo = a ,b,cd,e
    中间c和d连在一起了, c是第一个数组最后一个字串,d是第二个数组第一个字串,怎样改进这个正则表达式才可以避免啊?
      

  7.   

    呵呵,找到了,不是正则表达式问题,只要把userInfo=(getuserInfo +userInfo+"").match(/(\b\w+(?:\w+)?\b)(?!.*,\1\b)/g);改为userInfo=(getuserInfo +","+userInfo+"").match(/(\b\w+(?:\w+)?\b)(?!.*,\1\b)/g);就行了
      

  8.   

    忘了连接少了分隔问题,连接用 concat函数好些
    userInfo=(getuserInfo.concat(userInfo)+"").match(/(\b\w+(?:\w+)?\b)(?!.*,\1\b)/g);