【问题标题】:Create new array sorting multidimensional array in javascript在javascript中创建新的数组排序多维数组
【发布时间】:2019-02-23 18:11:08
【问题描述】:

我有 3 个数组,想用 key 将它们合并成一个数组

第一个数组:

dataStringold = $(this).data("old_position"); 

结果:["addpr_0", "addpr_1", "addpr_2"]

第二个数组:

 dataStringnew = $(this).data("new_position");

结果:["addpr_0", "addpr_2", "addpr_1"]

第三个数组:

var values = [];
$('.destino').each(function(){
   values.push( $(this).val()); 
});

结果:["1", "27", "2"]

以及我需要获取它们的密钥并像这样合并到新数组中的所有内容:

["addpr_0","addpr_0","1"] ["addpr_1","addpr_2","27"] ["addpr_2","addpr_1","2"]

怎么办?

【问题讨论】:

    标签: javascript jquery arrays multidimensional-array


    【解决方案1】:

    另一种方法是使用函数Array.from 并使用处理程序中的索引获取每个元素。

    let arr = ["addpr_0", "addpr_1", "addpr_2"],
        arr2 = ["addpr_0", "addpr_2", "addpr_1"],
        arr3 = ["1", "27", "2"],
        result = Array.from({length: Math.max(arr.length, arr2.length, arr3.length)}, (_, i) => [arr[i], arr2[i], arr3[i]]);
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      【解决方案2】:

      如果所有数组的大小相同,则以下代码有效

      var result = ["addpr_0", "addpr_1", "addpr_2"];
      var result2 =  ["addpr_0", "addpr_2", "addpr_1"];
      var result3 =  ["1", "27", "2"];
      
      var newResutl =[];
      var i =0;
      newResutl=result.map(function(item){
        var n = result.indexOf(item);
        return[item, result2[n], result3[n]];
      });
      
      console.log(newResutl);
      

      【讨论】:

        【解决方案3】:

        您可以通过for in 遍历第一个数组并使用index 访问每个元素。

        const arr1 = ["addpr_0", "addpr_1", "addpr_2"]
        const arr2 = ["addpr_0", "addpr_2", "addpr_1"]
        const arr3 = ["1", "27", "2"]
        const result = []
        
        for (let index in arr1)
          result.push([arr1[index], arr2[index], arr3[index]])
        
        console.log(result)

        【讨论】:

          【解决方案4】:

          您可以将数组用于任意数量的数组以获得转置数组。

          var array0 = ["addpr_0", "addpr_1", "addpr_2"],
              array1 = ["addpr_0", "addpr_2", "addpr_1"],
              array2 = ["1", "27", "2"],
              arrays = [array0, array1, array2],
              result = arrays.reduce((r, a) => a.map((v, i) => (r[i] || []).concat(v)), []);
          
          console.log(result);
          .as-console-wrapper { max-height: 100% !important; top: 0; }

          【讨论】:

            猜你喜欢
            • 2013-08-02
            • 2017-10-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多