【发布时间】:2019-08-23 00:57:42
【问题描述】:
我正在创建一个函数来比较长度为 6 的多维数组中的项目。我从下到上和从左到右进行比较。如果第一个元素(索引 0)如下i[0][5] > i[0][4] > i[0][3] > i[0][2] > i[0][1] > i[0][0],则返回 false,如果只有至少一个元素不遵守上述规则,则返回 false。
当我尝试使用 for 循环时,程序只返回 1 个结果,而不是所有预期的结果。
let multidimArr = [
[1, 2, 3, 2, 1, 1]
[2, 4, 4, 3, 2, 2]
[5, 5, 5, 5, 4, 4]
[6, 6, 7, 6, 5, 5]
[4, 7, 6, 8, 7, 6]
[4, 9, 6, 7, 8, 9]
];
function compare() {
for (var i=0, len=multidimArr.length; i<len; i++) {
for (var j=0, len2=multidimArr[i].length; j<len2; j++) {
if( i <= 0 ) continue;
if ( multidimArr[i][j] < multidimArr[i - 1][j] ) {
return false
);
} else if( multidimArr[i][j] > multidimArr[i - 1][j] ){
return true;
}
}
console.log('the status is [' + compare() + ']');
对于此代码,第一列的预期结果为 false,第二列为 true,第三列为 false,第 4 列为 true,第 5 列为 false,最后一列为 true。
不幸的是它只返回 false。
【问题讨论】:
-
由于你的函数只返回一次,它永远不会返回一个以上的值。如果你想要多个值,创建一个数组,根据你想要的任何方案添加元素,然后返回数组...
-
对....一旦你返回
compare()完成,所有循环都将退出并只记录一个结果 -
我不明白你的预期结果...你能详细说明一下吗?
-
感谢您的 cmets。我想要的是按列比较这个数组,如果前一列中的项目较小,则返回 true;如果只有一个不符合此规则,则返回 false。第一列项目:1、2、5、6、4、4 应该返回 false。第二列项目:2、4、5、6、7、9 应该返回 true 等等。
标签: javascript for-loop multidimensional-array