我有以下示例代码;
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
我将不胜感激任何帮助......先谢谢。
答案 0 :(得分:2)
此解决方案将从您的平面阵列转换为您所描述的多维数组。
的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);
上
<强>更新强>
好的,我将假设@ {@ 1}正如@bergi所建议的那样,你希望转换而不是myarray
。基于这个假设,这里是一个修改过的解决方案
的Javascript
myarray2
上
这是另一种展平方法
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);
如果你不喜欢
var flattened = myarray.reduce(function(a, b) {
return a.concat(b);
});
仅为了感兴趣,以上展平方法的jsperf。
答案 1 :(得分:0)
这将从头开始生成一个数组数组。
var x = 10;
var y = 4;
var result = [];
for(j = 0; j < y; j++) {
result[j] = [];
for(i = 0; i < x; i++) {
result[j].push((j % y + i*y) * 100);
}
}
console.log(result);
收率:
[ [ 0, 400, 800, 1200, 1600, 2000, 2400, 2800, 3200, 3600 ],
[ 100, 500, 900, 1300, 1700, 2100, 2500, 2900, 3300, 3700 ],
[ 200, 600, 1000, 1400, 1800, 2200, 2600, 3000, 3400, 3800 ],
[ 300, 700, 1100, 1500, 1900, 2300, 2700, 3100, 3500, 3900 ] ]
您可以通过更改x和y来调整条目数。
答案 2 :(得分:0)
您可以使用lodash或下划线JavaScript由一个衬里完成此操作,
let arr=[100,200,300,400,500,600,700,800,900,100,1100,1200,1300,1400,1500,1600];
let len=4; // Can be varied upon your requirement
let soln= _.unzip( _.chunk(arr,len)).map((x)=>{return (x!==undefined)?x:[];});
console.log(soln); // This will print resultant array
这将打印以下结果。
[[100,500,900,1300],
[200,600,100,1400],
[300,700,1100,1500],
[400,800,1200,1600]]