Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 验证2D数组每行具有相同长度的最快/最优雅的方法?_Javascript_Arrays_Matrix - Fatal编程技术网

Javascript 验证2D数组每行具有相同长度的最快/最优雅的方法?

Javascript 验证2D数组每行具有相同长度的最快/最优雅的方法?,javascript,arrays,matrix,Javascript,Arrays,Matrix,假设我有一个2D数组: const matrixRegular = [ ['a', 'b', 'c'], ['e', 'f', 'g'], ]; 假设我想验证此矩阵中的每一行都具有相同的长度,因此上面的示例是有效的矩阵,但下面的示例不是: const matrixIrregular = [ ['a', 'b', 'c'], ['e', 'f'] ]; 什么是干净/优雅的方式?这是我的一条班轮: const isRegularMatrix = matrix =&

假设我有一个2D数组:

const matrixRegular = [
    ['a', 'b', 'c'],
    ['e', 'f', 'g'],
];
假设我想验证此矩阵中的每一行都具有相同的长度,因此上面的示例是有效的矩阵,但下面的示例不是:

const matrixIrregular = [
    ['a', 'b', 'c'],
    ['e', 'f']
];
什么是干净/优雅的方式?这是我的一条班轮:

const isRegularMatrix = matrix => new Set(data.map(row => row.length)).size === 1
将矩阵转换为一个只有行长度的数组,然后使用
Set
确保每个元素都是重复的(相同的长度),因此大小为1。

您可以使用
every()
并将每个数组的
length
与第一个数组的长度进行比较

const isRegularMatrix = matrix => matrix.every(x => x.length === matrix[0].length)

如果矩阵有0行,则函数将返回false。这是您已经考虑过的吗?我认为
every()
会更好一些,因为一旦找到第一个不规则的行,它就会停止
flat()
必须遍历所有行。所有答案(包括@Kousha建议的答案)都是O(n),其中n是行数,因此我会选择一个更容易阅读的答案,我认为
every()
也是最好的答案。编辑:仔细想想,
flat()
实际上不起作用。它将把
[[1],[1,2,3],[1,2]]
视为有效的矩阵。同意,为了完整起见,我将添加一个
matrix=>matrix.length&&matrix[0]。构造函数===数组和矩阵。每个(…)
Maheer请修复您的答案
flat()
不起作用(请参阅我的其他评论)。@LucioPaiva噢,谢谢你提供我没有想到的信息。对于该输入,
flat()
永远无法工作。我把它删掉了。@MaheerAli你也有打字错误<代码>martix。每个都拼写为martix,而不是矩阵。