在对运动进行“锤击”测试时,我正在努力查看我的功能出了什么问题—如果有人可以提供一些帮助,我将不胜感激:

规格

it('small hamming distance in longer strand', function () {
  expect(hamming.compute('GGACG', 'GGTCG')).toEqual(1);
});


对于两个字符串之间顺序不匹配的每个字符,我想添加1。因此,在这种情况下,G === G(0),G === G(0),A!== T(1 ),C === C(1),G === G(1)。

因此,如规范所示,我希望返回1。

但是我下面的函数返回5。

我的功能

this.compute = function(dna1, dna2) {

  var mismatches = 0;

  for (var i = 0; i <= dna1.length; i++) {
    if (dna1[i] === dna2[i]) {
      mismatches ++;
    }
  }

  return mismatches;

}


谁能解释我要去哪里错了?

提前致谢!

最佳答案

如果您期望有所不同,则功能应类似于:

this.compute = function(dna1, dna2) {

  var mismatches = 0;

  for (var i = 0; i <= dna1.length; i++) {
    if (dna1[i] != dna2[i]) {//if character not equals
      mismatches ++;
    }
  }

  return mismatches;

}

07-27 13:41