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

JavaScript实现DNA互补链函数返回数组出现多余元素问题排查

问题原因

  • 你将存储互补链的数组dnaComStrand声明在了函数外部,属于全局作用域变量,它的内容会在多次函数调用之间保留,不会自动清空。
  • 第一次调用DNAStrand('GCATA')时,循环执行了5次,给dnaComStrand的索引0到4都完成赋值,数组长度变为5。
  • 第二次调用DNAStrand(['T', 'C', 'G'])时,传入的参数长度是3,循环仅执行到i=2,只修改了dnaComStrand索引0、1、2的内容,索引3、4的旧值没有被覆盖,因此最终返回的数组仍然是长度为5,后两位就是第一次调用残留的多余元素。

修正方案

把dnaComStrand的声明移到函数内部,每次调用函数都会创建一个全新的空数组存储本次的互补链,不会残留上一次调用的内容,修正后代码如下:

const DNAStrand = function(dnaStrand) {
  // 每次调用新建空数组,避免跨调用数据残留
  let dnaComStrand = [];
  for (let i = 0; i < dnaStrand.length; i++) {
    if (dnaStrand[i] === `A`) {
      dnaComStrand[i] = `T`;
    } else if (dnaStrand[i] === `T`) {
      dnaComStrand[i] = `A`;
    } else if (dnaStrand[i] === `C`) {
      dnaComStrand[i] = `G`;
    } else if (dnaStrand[i] === `G`) {
      dnaComStrand[i] = `C`;
    }
  }
  // 若需要返回字符串格式的互补链可打开下方注释
  // return dnaComStrand.join(``);
  return dnaComStrand;
};
console.log(DNAStrand(`GCATA`)); // 输出 ["C", "G", "T", "A", "T"]
console.log(DNAStrand([`T`, `C`, `G`])); // 输出 ["A", "G", "C"]

内容的提问来源于stack exchange,提问作者user17316007

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:03