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

JavaScript字符串替换问题:如何生成正确的互补DNA链?

问题排查与修复

原代码的核心问题

  1. 字符串不可变性与未赋值:JavaScript中字符串是原始值,const compl = dna只是让compl指向原字符串的引用,而replace()方法不会修改原字符串,只会返回一个新字符串。你每次调用replace后都没把结果重新赋值给compl,所以compl始终等于原输入。
  2. 替换顺序逻辑错误:就算你赋值了,先把A换成T,之后又把T换成A,会把刚替换出来的T又改回A,完全抵消了之前的操作,同理C和G的替换也会出现这种问题。
  3. 冗余的includes判断:replace()在没有匹配到目标字符时会直接返回原字符串,提前用includes判断完全没必要,纯属多余。

修复后的代码写法

可以用两种简洁的方式实现:

方式1:利用replace的回调函数 + 映射对象

function dnaStrand(dna) {
  const map = { A: 'T', T: 'A', C: 'G', G: 'C' };
  const compl = dna.replace(/[ATCG]/g, char => map[char]);
  console.log(compl);
  return compl;
}

方式2:拆分字符遍历后重组

function dnaStrand(dna) {
  const map = { A: 'T', T: 'A', C: 'G', G: 'C' };
  const compl = dna.split('').map(char => map[char]).join('');
  console.log(compl);
  return compl;
}

测试验证

输入ATGC时,两种写法都会输出TACG,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:45:56