JavaScript如何将数组中所有指定值替换为另一值(代码排错)
问题原因说明
你的代码一共有3处语法/用法错误,直接导致"T"无法被替换、输出结果不符合预期:
split()未传入分隔符参数:无参调用split()时,不会将字符串拆分为单字符数组,只会返回长度为1、元素为完整原字符串的数组,遍历逻辑根本无法触达每个单独字符。按单字符拆分需要传入空字符串作为参数,即split('')。- 数组变量名拼写错误:你定义的存储拆分结果的数组名为
array,但条件判断内赋值时写的是a[i] = 'U',a是未定义的变量,赋值操作根本不会修改目标数组内的元素。 join()未传入分隔符参数:无参调用join()时,默认使用英文逗号作为连接符拼接数组,最终返回结果会夹带多余逗号。要拼接为连续无间隔的字符串,需要传入空字符串作为参数,即join('')。
修正后代码
原逻辑修复版本
完全保留你原本拆分数组-遍历替换-拼接返回的逻辑,仅修正上述错误:
function DNAtoRNA(dna) { let array = dna.split(''); let rna = ""; for (var i = 0; i < array.length; i++) { if (array[i] == 'T') { array[i] = 'U'; } } rna = array.join(''); return rna; }
简化实现版本
不需要手动遍历数组,直接用字符串全局替换即可实现相同效果,代码更简洁:
function DNAtoRNA(dna) { return dna.replace(/T/g, 'U'); }
测试验证
传入测试输入"ATFT"时,上述两个版本的函数都会返回预期结果"AUFU"。
内容的提问来源于stack exchange,提问作者ianw
相关产品推荐
相关产品推荐

