javascript - javascript 数组中的水平到垂直

标签 javascript arrays

我有下面的示例代码;

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/

相关文章:

javascript - 增加/减少滚动变量

c++ - 在 C++ 中传递和返回二维数组

javascript - 将 excel 二维数组转换为包含列名的嵌套属性对象

arrays - 几个不连续的列到数组中

java - 不使用任何循环对 ArrayList 元素进行操作

javascript - 如何在 Firefox 和/或 Chrome 中测量 FPS 和页面绘制时间?

javascript - Angular : How to access scope from ui-grid cell template?

python - 在 numpy 数组中计算值发生更改之前的长度以及转换次数的最佳方法(最好是 numpythonic)?

javascript - 焦点即兴输入文字

javascript - 按优先于其中一个的两个值排序