通过在Javascript中用零填充空元素来修复具有不同长度的行的数组

问题描述

我看到了this问题,从我所做的工作中可以得到答案,但不幸的是,它使用Python而不是Javascript。所以我想问一个类似的问题。

我有一个遵循以下格式的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);