我有下面的示例代码;
var myarray= [],
myarray2=[];
var L=100;
for(j =0; j< 4;j++){
for(i =0; i<4;i++){
myarray.push([L]);
L=L+100;
}
myarray2.push(myarray);
alert(myarray2[j]);
}
输出将是
100,200,300,400,500,600,700,800,900,100,1100,1200,1300,1400,1500,1600
是否可以对数组中的数组中的值进行如下排序?
100, 500, 900, 1300
200, 600, 1000, 1400
300, 700, 1100, 1500
400, 800, 1200, 1600
如果有任何帮助,我将不胜感激......提前致谢。
最佳答案
此解决方案将从您的平面数组转换为您所描述的多维数组。
Javascript
var array = "100,200,300,400,500,600,700,800,900,100,1100,1200,1300,1400,1500,1600".split(",");
var grouping = 4;
var result = [];
array.forEach(function (element, index) {
var group = index % grouping;
var temp = result[group];
if (!Array.isArray(temp)) {
temp = [];
}
temp.push(element);
result[group] = temp;
});
console.log(result);
关于jsfiddle
更新:
好吧,我假设您希望转换的是 myarray
,正如 @bergi 所建议的那样,而不是 myarray2
。基于这个假设,这是一个修改后的解决方案
Javascript
var myarray = [],
myarray2 = [];
var L = 100;
for (var j = 0; j < 4; j++) {
for (var i = 0; i < 4; i++) {
myarray.push([L]);
L = L + 100;
}
myarray2.push(myarray);
}
var columns = 4;
var result = [];
var flattened = myarray.toString().split(",");
var length = flattened.length;
var rows = Math.round(length / columns);
flattened.forEach(function (element, index) {
var group = index % rows;
var temp = result[group];
if (!Array.isArray(temp)) {
temp = [];
}
temp.push(element);
result[group] = temp;
});
console.log(result);
关于jsfiddle
这是另一种展平方法
var flattened = myarray.reduce(function(a, b) {
return a.concat(b);
});
如果你不喜欢
var flattened = myarray.toString().split(",");
仅出于兴趣考虑,jsperf关于上述展平方法。
关于javascript - javascript 数组中的水平到垂直,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16348226/