我正在从事 Office.js 开发,您不需要了解任何相关信息,因为问题更多地与 Javascript 相关。在 Excel 中,您可以通过函数获得公式矩阵,即数组的数组。
通常有很多空值,只有几个填充值。现在,我想找到这些填充值及其索引。
在给定矩阵 (n * m) 的情况下,是否可以在 Javascript 中以低于 O(n * m) 的复杂度来完成此操作
谢谢
除了逐一循环矩阵中的每个单元格之外,我想不出其他解决方案。
您可以考虑使用
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()
循环遍历矩阵的每个元素。当它遇到非空单元格时,它将其行索引、列索引和值记录到对象数组中。这样,您最终会得到一个包含非空单元格的索引和值的数组。