在矩阵中查找非空单元格的最快方法是什么

问题描述 投票:0回答:1

我正在从事 Office.js 开发,您不需要了解任何相关信息,因为问题更多地与 Javascript 相关。在 Excel 中,您可以通过函数获得公式矩阵,即数组的数组。

通常有很多空值,只有几个填充值。现在,我想找到这些填充值及其索引。

在给定矩阵 (n * m) 的情况下,是否可以在 Javascript 中以低于 O(n * m) 的复杂度来完成此操作

谢谢

除了逐一循环矩阵中的每个单元格之外,我想不出其他解决方案。

javascript matrix big-o office-js
1个回答
0
投票

您可以考虑使用

Array.prototype.reduce()
来实现此目的。但是,要找到这些值,您需要至少检查每个元素一次,因此在最坏的情况下复杂度不会低于
O(n * m)

这是一个如何使用

reduce()
进行操作的示例:

function findNonEmptyIndices(matrix) {
  return matrix.reduce((acc, row, rowIndex) => {
    row.forEach((cell, colIndex) => {
      if (cell !== null && cell !== undefined && cell !== '') {
        acc.push({ rowIndex, colIndex, value: cell });
      }
    });
    return acc;
  }, []);
}

// Example usage:
const myMatrix = [
  [null, '', 5, null],
  [8, null, '', 10],
  ['', 20, null, 'hello'],
];

const nonEmptyIndices = findNonEmptyIndices(myMatrix);
console.log(nonEmptyIndices);

此函数

findNonEmptyIndices()
使用
reduce()
循环遍历矩阵的每个元素。当它遇到非空单元格时,它将其行索引、列索引和值记录到对象数组中。这样,您最终会得到一个包含非空单元格的索引和值的数组。

© www.soinside.com 2019 - 2024. All rights reserved.