这个需求是这样的:有一个字符串,暂时定义为str= ‘1,2|A,B’,怎样通过程序,得出组合为:1A,1B,2A,2B?如果str='1,2|A,B|C,D',则组合为1AC,1BC,1AD,1BD,2AC,2BC,2AD,2BD呢?如果str='1,2|A,B,C,D|@,#'就有16种组合方式,大家记住,str的“|”是动态的,可能1个,也可能2个,3个....这个问题我觉得有趣,看看大家怎样解决了
   

解决方案 »

  1.   

    没意思,多个数组组合,split切割出字符串,将字符串切割成数组,然后不断的循环循环循环
      

  2.   

    多个数组组合,split切割出字符串,将字符串切割成数组,然后不断的循环循环循环   同意!!
      

  3.   

    php写过个类似的
    var getCombine = function(str){
    var c = str.split('|'),data=[],r=c[0].split(',');
    for(var m=1,j=c.length;m<j;m++){
    data[data.length] = c[m].split(',');
    }
    for(var i in data){
    var n = [],v=data[i];
    for(var j in r){
    for(var k in v){
    n[n.length] = r[j]+''+v[k]
    }
    }
    r = n;
    }
    return n;
    }
    alert(getCombine('1,2|A,B|C,D'));
    alert(getCombine('1,2|A,B,C,D|@,#'));
      

  4.   


        Array.prototype.each = function(callback) {
             for (var i = 0, count = this.length; i < count; i++) callback(this[i]);
         }
        
        function combine(str) {
            var groups = [];
            str.split('|').each(function(a) { groups.push(a.split(',')); });
            var first = groups.shift();
            groups.each(function(a) { first = combineArray(first, a); });
            return first.join(",");
        }    function combineArray(a1, a2) {
            var a3 = [];
            a1.each(function(a) { a2.each(function(b) { a3.push(a + b); }); });
            return a3;
        }
        
        alert(combine('1,2|a,b,c,d|@,$'));
        alert(combine('1,2|a,b,c,d|A,B|@,$'));