系列文章
题目

规则如下:
- 数组的第一个元素为
age,第二个元素为handicaps - 当
age > 54并且7 < handicaps < 26的时候输出'Senior' - 否则输出
'Open'
解析
这个逻辑是相当简单了(因为题目已经提示了输入是可以信任的,所以这里就不做健壮性处理)。
- 遍历外层数组,将每个数组元素的 0 号位赋值给
age,1 号位赋值给handicaps - 如果
age < 55则返回false - 否则判断
7 < handicaps < 26是否满足,满足则返回true - 遍历返回的数组,用
'Senior'和'Open'替代true和false
按照上述思路完成函数即可:
function openOrSenior(data) {
let age, handicaps;
return data
.map((info) => {
age = info[0];
handicaps = info[1];
if (age < 55) {
return false;
} else if (handicaps > 7 && handicaps < 26) {
return true;
}
})
.map((flag) => (flag ? "Senior" : "Open"));
}
优化
按照老规矩,我们对上面的便秘代码进行优化。
- 首先对于数组元素,我们直接对其解构即可赋值
- 其次判断条件之后直接返回
'Open' or 'Senior'即可,根本没必要先返回true or false在遍历替换
那么最终结果如下:
const openOrSenior = (data) =>
data.map(([age, handicap]) =>
age > 54 && handicap > 7 && handicap < 26 ? "Senior" : "Open"
);