关闭。这个问题是opinion-based .它目前不接受答案。
想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.
2年前关闭。
Improve this question
此函数接受一串 DNA,例如“GTCA”,并返回一个包含正确匹配的 DNA 对的数组。
function pairDNA(dna) {
const pairs = []
for (let i = 0; i < dna.length; i ++) {
if (dna[i] === "C" | dna[i] === "c") {
pairs.push("CG");
} else if (dna[i] === "G"| dna[i] === "g") {
pairs.push("GC");
} else if (dna[i] === "T"| dna[i] === "t") {
pairs.push("TA");
} else if (dna[i] === "A"| dna[i] === "a") {
pairs.push("AT");
}
}
return pairs;
}
这是对的。但是,我正在尝试找到一种更短,更简单的编写方式。任何人都可以帮助我使用我应该使用的东西吗?
最佳答案
您可以通过以下步骤改进您的代码:
toLowerCase()
在输入。 split
字符串和 map()
它而不是创建一个数组 push()
值(value)观融入其中。 function pairDNA(dna) {
const obj = {
c: 'CG',
g: 'GC',
t: 'TA',
a: "AT"
}
return dna.split('').map(x => obj[x.toLowerCase()])
}
如果字符串可以包含任何其他特定字母,那么您需要
filter()
undefined
map
之后的值return dna.split('').map(x => obj[x.toLowerCase()]).filter(x => x !== undefined)
@RobG 在评论中提到了另一个更好的方法,即我们可以在遍历字符串之前从字符串中删除不需要的字母。
return dna
.toLowerCase()
.replace(/[^cgta]/g,'')
.split('')
.map(x => obj[x])
关于javascript - 如何改进和缩短这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60169584/