indexOf()显示意外值

indexOf() showing unexpected value

本文关键字:意外 显示 indexOf      更新时间:2023-09-26

在执行警报时,第一个元素的索引即紫色显示为-1。但这对于得到正确的结果是出乎意料的。因此,我不能得到预期的结果,任何人帮助我,这样我就可以在编码进一步。实际上我新的javascript,所以我面临这样的问题。

var colors = ["voilet", "indigo", "blue", "green", "yellow", "orange", "red"];
var target;
var target_index;
var guess_input;
var finished = false;
function do_game() {
  var random_number = Math.random() * 7;
  var random_number_integer = Math.floor(random_number);
  var target_index = random_number_integer;
  target = colors[target_index];
  alert(target);
  while (!finished) {
    var guess_input = prompt("I am thinking of a color " +
      "violet,indigo,blue,green,yellow,orange,red" +
      "What is the color?");
    alert(colors.indexOf(guess_input));
    finished = check_guess();
  }
}
function check_guess() {
  if (colors.indexof(guess_input) < 0) {
    alert('not present');
    return false;
  }
  if (guess_input > target) {
    alert('you gave large');
    return false;
  }
  if (guess_input < target) {
    alert('you gave small');
    return false;
  }
  return true;
}

您说您的guess_inputviolet,它返回-1

这是正常行为,因为violet不存在于您的数组

["voilet","indigo","blue","green","yellow","orange","red"];

有一个打字错误:你写voilet而不是violet

检查数组中violet的拼写。

if (colors.indexof(guess_input) < 0) {
    alert('not present');
    return false;
  }

这里也有一个错别字。应该是:

colors.indexOf(guess_input)

guess_inputdo_game函数内部定义了一个var,所以它不是全局的。

您需要删除var,以便可以在其他方法中访问它或将其传递给其他方法。

/* fixed spelling here */
var colors = ["violet", "indigo", "blue", "green", "yellow", "orange", "red"];
var target;
var target_index;
var guess_input;
var finished = false;
function do_game() {
  var random_number = Math.random() * 7;
  var random_number_integer = Math.floor(random_number);
  var target_index = random_number_integer;
  target = colors[target_index];
  alert(target);
  while (!finished) {
    /* removed var here */
    guess_input = prompt("I am thinking of a color " +
      "violet,indigo,blue,green,yellow,orange,red" +
      "What is the color?");
    alert(colors.indexOf(guess_input));
    finished = check_guess();
  }
}
function check_guess() {
  /* fixed typo here */
  if (colors.indexOf(guess_input) < 0) {
    alert('not present');
    return false;
  }
  if (guess_input > target) {
    alert('you gave large');
    return false;
  }
  if (guess_input < target) {
    alert('you gave small');
    return false;
  }
  return true;
}
do_game()