Tags:interview

Category: Front End

循环亮灯问题

  • 题目描述
    现有三盏灯红灯 黄灯 绿灯 红灯持续亮10秒 黄灯3秒 绿灯5秒, 请实现一个方法让3盏灯有序替换亮灯灭灯

  • 思路
    使用定时器递归调用不同的亮灯方法, 通过map匹配亮灯持续时间将持续时间传递给定时器

const  stop = () => {
    return 'red';
}

const attention = () =>{
    return 'yellow';
}

const go = () =>{
    return 'green';
}


const map = {
    'red':10000,
    'yellow':3000,
    'green':5000
}
const lights = [stop,attention,go]
const  jump = (i) =>{
        console.log(lights[i]())
        setTimeout( () => {
            jump(i<2 ? ++i : i=0);
        },map[lights[i]()])

}
jump(0)
  • 2019/11/20 此方法解决了问题, 但是回头看代码似乎过于复杂