几乎同样的代码,注意数据类型
来源:7-2 棒球比赛-代码实操

_玲
2019-03-08
/**
* 思路:将有含义的符号转换为数字;
* 1. 遍历数组arr;
* 2. 初始化result = [];
* 3. 非C、非D、非+,推到result中;
* 4. 遇C,删掉result最后一位;
* 5. 遇D,将result最后一位 * 2,推入result中;(如果第一位出现D呢?---人为忽略)
* 6. 遇+,将result后两位只和,推入result中;(如果第二位出现+呢?---人为忽略)
* 7. 将result作和;
*/
export default (arr) => {
// 用数组来实现堆栈结构,pop,push
let result = []
// 对数组进行遍历,遍历的目的是处理得分
arr.forEach(item => {
switch (item) {
case 'C':
result.pop()
break
case 'D':
//克隆数组;
result.push([...result].pop() * 2)
break
case '+':
//克隆数组;
// const clone = [].concat(result)
const clone = JSON.parse(JSON.stringify(result))
result.push(clone.pop() + clone.pop())
break
default:
result.push(+item)
}
})
return result.reduce((total, num) => { return total + num })
}
注意: 有没有发现,最终的result数组元素不再是字符串,而是 数字类型,老师也有偷偷地转换呢。
写回答
2回答
-
用代码虚构一个你
2020-03-30
兄弟这个整复杂了,其实只需要对放入result的第一个数设为数字类型就行了,老师用的*1,用parseInt方法也可以
00 -
快乐动起来呀
2019-03-10
嗯呢,+的运算符特性,不转换就是字符串了
00
相似问题