问题描述
我看到了this问题,从我所做的工作中可以得到答案,但不幸的是,它使用Python而不是Javascript。所以我想问一个类似的问题。
[email protected]
我要寻找的函数应该旋转该数组,并用零填充所有数组,直到它们全部达到最大长度为止(对于上面的示例,此例为5)。该函数应输出具有以下格式的数组:
[[1,2,3],[4,5,6,7,8],[9,10]]
解决方法
您可以先找到最长的子数组,然后创建该长度的新子数组并用原始数据填充它们:
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,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);