gpt4 book ai didi

javascript - 如何改进和缩短这段代码?

转载 作者:行者123 更新时间:2023-12-01 14:56:57 26 4
gpt4 key购买 nike

关闭。这个问题是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;
}

这是对的。但是,我正在尝试找到一种更短,更简单的编写方式。任何人都可以帮助我使用我应该使用的东西吗?

最佳答案

您可以通过以下步骤改进您的代码:

  • 当有多个 if 语句并且都具有相同的结构时,您可能需要使用一个对象
  • 您需要检查大写和小写。只需使用 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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com