我的情况是将一个字符串分成字符串数组,然后将每三个字符转换为一个字符串。 (例如“xxxyyy”-> ['xxx','yyy'])

const translate = function (RNA) {
    var arrRna = Array.from(RNA);
    var arr = [];
    for (var key in arrRna) {
        if ((key % 3) == 0) {
            var temp = RNA.slice( key,  (key+3));
            arr.push(temp);
        }

    }
    return arr;
}

console.log(translate('xxxyyyzzz'));


预期结果:['xxx','yyy','zzz']
但是我想要的结果是:[ 'xxx', 'yyyzzz', 'zzz' ]
另外,我注意到slice方法在第一次迭代中按预期方式工作,但是之后,结果很奇怪->'yyyzzz'。为什么??

最佳答案

多田与其将字符串转换为数组并遍历每个字符等待索引为3的倍数,不如将其计数为3s。

function translate(rna) {
  let arr = [];

  for (let i = 0; i < rna.length; i += 3) {
    arr.push(rna.slice(i, i + 3));
  }

  return arr;
}

console.log(translate('xxxydyyzzzd'));

关于javascript - 从String.slice()方法返回的奇怪结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53924902/

10-10 02:04