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]]
4

2 回答 2

1

您可以先找到最长的子数组,然后创建该长度的新子数组并用原始数据填充它们:

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));

于 2020-08-18T12:56:42.620 回答
0

计算剩余的项目并在最后连接。

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);

于 2020-08-18T13:01:59.717 回答