我正在创建一个函数来比较长度为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,第四列为true,第五列为false,最后列为true 。
不幸的是,它只会返回false。
答案 0 :(得分:1)
您可以缩小数组,并在第一行使用true
,然后检查最后一个和实际值并遵守最后一个检查。
function check(array) {
return array.reduce((r, a, i, { [i - 1]: b }) => a.map((v, j) => i
? r[j] && b[j] < v
: true
), []);
}
var array = [[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]];
console.log(check(array));