我已经看到了这个问题,并且从我的研究中得到了答案,但不幸的是它使用了 Python 而不是 Javascript。所以我想问一个类似的问题。
我有一个遵循以下格式的 Javascript 数组:
[[1,2,3],[4,5,6,7,8],[9,10]]
我正在寻找的函数应该转动这个数组并用零填充它们,直到它们都达到最大长度(对于上面显示的这个例子,它是 5)。该函数应输出具有以下格式的数组:
[[1,2,3,0,0], [4,5,6,7,8],[9,10,0,0,0]]
我已经看到了这个问题,并且从我的研究中得到了答案,但不幸的是它使用了 Python 而不是 Javascript。所以我想问一个类似的问题。
我有一个遵循以下格式的 Javascript 数组:
[[1,2,3],[4,5,6,7,8],[9,10]]
我正在寻找的函数应该转动这个数组并用零填充它们,直到它们都达到最大长度(对于上面显示的这个例子,它是 5)。该函数应输出具有以下格式的数组:
[[1,2,3,0,0], [4,5,6,7,8],[9,10,0,0,0]]
您可以先找到最长的子数组,然后创建该长度的新子数组并用原始数据填充它们:
function padArray(arr) {
let length = Math.max(...arr.map(row => row.length));
return arr.map(row => Array.from({length}, (_, i) => i < row.length ? row[i] : 0));
}
let arr = [[1,2,3],[4,5,6,7,8],[9,10]];
console.log(padArray(arr));
计算剩余的项目并在最后连接。
const data = [[1,2,3],[4,5,6,7,8],[9,10]];
const result = data.reduce((r, c) => {
const remainingLen = 5 - c.length;
if (remainingLen > 0) {
c = [].concat(c, new Array(remainingLen).fill(0));
}
r.push(c);
return r;
}, []);
console.log(result);