You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:修复处理连续'flick'时失效的布尔值切换函数

求助:修复处理连续'flick'时失效的布尔值切换函数

兄弟,你的问题我一眼就看出来了——你处理'flick'的逻辑错在直接把flag设为false,而不是真正的“切换”状态!

你对需求的理解完全没问题:就是需要一个开关,初始是true,每次碰到'flick'就翻转开关(true变false,false变true),不管是这个'flick'本身还是后面的元素,都要遵循翻转后的状态。但你现在的代码里,每次遇到'flick'都强制把flag改成false,这就导致连续遇到'flick'时,开关不会往回切,一直停在false,结果自然就不对了。

直接给你修正你的原代码,改动非常小,核心就是把flag = false;改成flag = !flag;:

function flickSwitch(arr) {
  let flag = true 
  let array = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].toLowerCase() == 'flick') {
      // 核心修正:翻转当前flag的状态,而非直接设为false
      flag = !flag;
    }
    // 不管当前元素是不是flick,都把当前的flag值加入结果数组
    array.push(flag);
  }
  return array;
}

我给你拆解下关键逻辑:

  • flag = !flag的意思是取当前flag的相反值,第一次遇到flick时true变false,第二次遇到时false又变回true,以此类推,这才是题目要求的“切换开关”效果
  • 把array.push(flag)移到if语句外面,这样不管当前项是不是flick,都会把当前的开关状态加入结果数组——这也符合题目里“flick项本身也要返回切换后状态”的要求

你可以测试之前出错的用例,比如["codewars", "flick", "flick", "wars"],修正后的函数会返回[true, false, true, true],完全正确。再测题目里的连续flick例子["flick", "flick", "flick", "flick", "flick"],会得到[false, true, false, true, false],和题目要求的结果完全匹配。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 07:13:01