【发布时间】:2020-09-13 13:57:54
【问题描述】:
我的尝试:
const find = function (map, type) {
let location = [];
for(var i = 0; i < map.length; i++){
for(var j = 0; j < map[i].length; j++){
switch(true) {
case (type === 'gold' && map[i][j] === 'R' ):
location.push(j,i);
break;
case (type === 'silver' && (map[i][j] === 'S' || map[i][j] === 'R')):
location.push(j,i);
break;
case (type === 'bronze' && (map[i][j] === 'S' || map[i][j] === 'R' || map[i][j] === 'M' ) ):
location.push(j,i);
break;
default:
return 'false';
break;
}
}
}
return location;
};
console.log(find(
[
// COLUMNS ARE X
// 0 1 2 3 4 5
['s', 'R', 's', 'S', 'n', 'M'], // 0 ROWS ARE Y
['s', 'M', 's', 'S', 'r', 'M'], // 1
['s', 'M', 's', 'R', 'r', 'm'], // 2
['S', 'r', 's', 'm', 'r', 'M'], // 3
['S', 'r', 's', 'm', 'r', 'M'], // 4
['S', 'r', 'S', 'M', 'M', 'S'] // 5
],
'gold'
));
我基本上是遍历一个表示矿物地图的二维数组,并通过将索引记录到数组位置并返回它来返回与我的 switch 语句中的条件相匹配的第一块土地的坐标。
我有两个主要问题:
如何编码,以便在找到与我的案例条件匹配的第一块土地后立即终止循环?现在 JS 将继续循环遍历整个 2D 数组,推入更多我不希望的坐标。
如果没有找到,我希望 JS 简单地返回字符串 False。但是,即使 case 语句的计算结果为 True,这似乎也在发生。只是想知道我是否有某种错字?
【问题讨论】:
标签: javascript arrays switch-statement