在javascript中创建新的数组排序多维数组
Posted
技术标签:
【中文标题】在javascript中创建新的数组排序多维数组【英文标题】:Create new array sorting multidimensional array in 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"]
怎么办?
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于在javascript中创建新的数组排序多维数组的主要内容,如果未能解决你的问题,请参考以下文章