【问题标题】:Fix array with rows of different lengths by filling the empty elements with zeros in Javascript [duplicate]通过在Javascript中用零填充空元素来修复具有不同长度行的数组[重复]
【发布时间】:2020-12-07 15:56:33
【问题描述】:

我已经看到this 的问题,并且从我所做的工作中得到了答案,但不幸的是它使用了 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]]

【问题讨论】:

  • 好的。那你试过什么?显示您的代码。

标签: javascript arrays zero pad zero-padding


【解决方案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));

【讨论】:

  • 我们不能使用 .fill 吗?
  • 当然,传播或连接
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-09
    • 2020-12-31
    • 2021-04-24
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多