我以这种形式在控制台中获取数据
0:(8) [70, 61, 74, 79, 76, 63, 51, 51]
1:(4) [64, 84, 84, 66]
2:(2) [79, 69]
3:(3) [77, 100, 98]
我想在控制台中打印我的数据:
0:(4) [70, 64, 79, 77]
1:(4) [61, 84, 69, 100]
2:(4) [74, 84, 0, 0]
3:(4) [79, 66, 98, 0]
4:(4) [76, 0, 0, 0]
5:(4) [63, 0, 0, 0]
6:(4) [51, 0, 0, 0]
7:(4) [51, 0, 0, 0]
使用这两个函数,我得到行中的最大数字,我用0填充空列,但我想显示像我写的示例中的数据。
function fillWithZeros(arr, length) {
for (var i = 0; i < length; i++) {
if (arr[i] == null) {
arr[i] = 0;
}
}
return arr;
};
function findMaxEvents(item){
var maxNumEvents = 0;
for (var i = 0; i < item.length; i++){
if (item[i] > maxNumEvents){
maxNumEvents = item[i];
}
}
return maxNumEvents;
}
答案 0 :(得分:1)
我希望您实际上正在寻找转置现有数组。 感谢Transposing a 2D-array in JavaScript.。
获得的答案与您的答案略有不同。希望这有助于尝试找到达到目标的正确方法。
var array = [[70, 61, 74, 79, 76, 63, 51, 51],
[64, 84, 84, 66],
[79, 69],
[77, 100, 98]];
var arrayWithMaxlen = array.map(function(a){return a.length;}).indexOf(Math.max.apply(Math, array.map(function(a){return a.length;})));
console.log("arrayWithMaxlen : " +arrayWithMaxlen); //gets index of array with max length
var newArray = array[arrayWithMaxlen].map(function(col, i) {
return array.map(function(row) {
if(row[i]!=undefined)return row[i];
else return 0;
})
});
console.log(newArray);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 1 :(得分:1)
您所描述的操作基本上是一个简单的矩阵转置。有很多方法可以做到这一点。这是另一种选择:
var array = [
[70, 61, 74, 79, 76, 63, 51, 51],
[64, 84, 84, 66],
[79, 69],
[77, 100, 98]
];
function transpose(arr){
var largest = arr.reduce(function(max, i){ return max.length > i.length ? max : i; }, []);
return largest.map(function(col, i){
return arr.map(function(row){
return row[i] || 0;
});
});
}
console.log(transpose(array));
答案 2 :(得分:0)
只需转置它。
BTW,接受的答案确实依赖于第一个内部数组长度。如果它比其他所有更大的指数都更短了。
var array = [[70, 61, 74, 79, 76, 63, 51, 51], [64, 84, 84, 66], [79, 69], [77, 100, 98]],
result = array.reduce(function (r, a, i) {
a.forEach(function (b, j) {
r[j] = r[j] || Array.apply(null, { length: array.length }).map(function () { return 0; });
r[j][i] = b;
});
return r;
}, []);
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;