【问题标题】:Creating a custom array from 2 existing arrays从 2 个现有数组创建自定义数组
【发布时间】:2018-07-18 22:48:28
【问题描述】:

我有 2 个这样的数组,

array_1 = [1,2,3]
array_2 = [a,b] 

我想在kurasulst 中获得 6 个数组,如下所示。

[1,a]
[1,b]
[2,a]
[2,b]
[3,a]
[3,b]

我试过了,但没有成功。

var rowCount = array_1.length + array_2.length; 
console.info("rowCount",rowCount);
var array_1Repeat = rowCount/(array_1.length);
var array_2Repeat = rowCount/(array_2.length);
console.info("array_1Repeat",array_1Repeat);
console.info("array_2Repeat",array_2Repeat);

var kurasulst =[];
for(var i=0; i<rowCount.length; i++){
    console.info("array_1[i]",array_1[i]);
    var kurasu = {array_1:array_1[i],array_2:array_2[i] };

kurasulst.push(kurasu);
}

请帮帮我。

【问题讨论】:

标签: javascript


【解决方案1】:

您可以使用reducemap

var output = array_1.reduce( ( a, c ) => a.concat( array_2.map( s => [c,s] ) ),  []);

演示

var array_1 = [1,2,3];
var array_2 = ["a","b"];
var output = array_1.reduce( (a, c) =>  a.concat(array_2.map( s => [c,s] )),  []);
console.log( output );

【讨论】:

    【解决方案2】:

    试试这个:

    var kurasulst = [];
    for (var i = 0; i < array_1.length; i++) {
        for (var j = 0; j < array_2.length; j++) {
            kurasulst.push([array_1[i], array_2[j]]);
        }
    }
    console.log(kurasulst);
    

    【讨论】:

      【解决方案3】:

      您可以执行以下操作:

      var array_1 = [1,2,3];
      var array_2 = ['a','b']; 
      
      var res = [];
      array_1.forEach(function(item){
        res2 = array_2.forEach(function(data){
          var temp = [];
          temp.push(item);
          temp.push(data);
          res.push(temp);
        });
      });
      
      console.log(res);

      【讨论】:

        【解决方案4】:

        您可以使用其他方法来处理任意数量的数组(种类),例如

        var items = [[1, 2, 3], ['a', 'b']],
            result = items.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []));
        
        console.log(result);
        .as-console-wrapper { max-height: 100% !important; top: 0; }

        有两个以上

        var items = [[1, 2, 3], ['a', 'b'], ['alpha', 'gamma', 'delta']],
            result = items.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []));
        
        console.log(result.map(a => a.join()));
        .as-console-wrapper { max-height: 100% !important; top: 0; }

        【讨论】:

          猜你喜欢
          • 2013-12-26
          • 1970-01-01
          • 2015-05-15
          • 1970-01-01
          • 2013-03-23
          • 2014-06-20
          • 1970-01-01
          • 2018-01-09
          • 1970-01-01
          相关资源
          最近更新 更多