javascript函数似乎正确,但

问题描述 投票:-5回答:1

我正在尝试解决Pokemon Damage Calculator kata,但我的代码找不到问题

这是我的代码:

function calculateDamage(yourType, opponentType, attack, defense) {
  let damage = 0;
  const effArr = [
    ["fire", "grass", 2],
    ["grass", "fire", 0.5],
    ["fire", "water", 0.5],
    ["water", "fire", 2],
    ["fire", "electric", 1],
    ["water", "grass", 0.5],
    ["grass", "water", 2],
    ["water", "electric", 0.5],
    ["electric", "water", 2]
    ["grass", "electric", 1]
  ];

  for (i = 0; damage == 0 && i < effArr.length; i++) {
    // console.log(effArr[i].indexOf(yourType) == 0, effArr[i].indexOf(opponentType) === 1, damage)
    if (effArr[i].indexOf(yourType) == 0 && effArr[i].indexOf(opponentType) == 1) {
      damage = (50 * effArr[i][2] * attack / defense)
    }
  }

  return damage;
}

这是预期的结果:

calculateDamage("fire", "water", 100, 100)    => 25  
calculateDamage("grass", "water", 100, 100)   => 100
calculateDamage("electric", "fire", 100, 100) => 50
calculateDamage("grass", "electric", 57, 19)  => 150

但是我却得到:

calculateDamage("fire", "water", 100, 100)    => true false 0
calculateDamage("grass", "water", 100, 100)   => false false 0
calculateDamage("electric", "fire", 100, 100) => true true 0
calculateDamage("grass", "electric", 57, 19)  => false false 0
javascript arrays indexof
1个回答
0
投票
[我认为,如果您使用对象而不是数组,则可以更有效地解决此问题-这样,您不必使用循环来搜索值,而只需使用yourType和[ C0]作为opponentType以获得类型有效性
© www.soinside.com 2019 - 2024. All rights reserved.