【问题标题】:Joining each item of an array with the items of another array将数组的每一项与另一个数组的项连接起来
【发布时间】:2009-10-29 07:15:51
【问题描述】:

考虑一下:

[ ["a", "b"], ["c", "d"], ["e"] ] 

如何转换为:

[ "a c e", "a d e", "b c e", "b d e" ]

【问题讨论】:

    标签: javascript arrays concat


    【解决方案1】:

    // 编辑:测试和工作

    function product(set) {
        if(set.length < 2)
            return set[0];
        var head = set.shift(), p = product(set), r = [];
        for(var j = 0; j < head.length; j++)
            for(var i = 0; i < p.length; i++)
                r.push([head[j]].concat(p[i]));
        return r;
    }
    
    var set = [
        [ "a", "b", "c"],
        [ "D", "E" ], 
        [ "x" ]
    ];
    
    var p = product(set);
    for(var i = 0; i < p.length; i++)
        document.write(p[i] + "<br>");
    

    【讨论】:

    • 非常感谢!我知道我必须在某个地方递归,但就是找不到模式。
    【解决方案2】:

    这行得通:

    <html><body><script>
    var to_join = [ ["a", "b"], ["c", "d"], ["e"] ];
    var joined = to_join[0];
    for (var i = 1; i < to_join.length; i++) {
        var next = new Array ();
        var ends = to_join[i];
        for (var j = 0; j < ends.length; j++) {
            for (var k = 0; k < joined.length; k++) {
                next.push (joined[k]+ " " + (ends[j]));
            }
        }
        joined = next;
    }
    alert (joined);
    </script></body></html>
    

    【讨论】:

      【解决方案3】:

      试试concat方法:

      var newArr=[];
      
      for(var i=0; i< arr.length; i++)
      { 
         newArr = newArr.concat(arr[i]);
      }
      

      【讨论】:

      • 只会产生 ["a", "b", "c", "d", "e"]
      • 对不起,我没有看到你想要的输出 :) 程序员的症状。
      猜你喜欢
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多