最高评分字

时间:2018-09-17 23:24:00

标签: javascript arrays

我已经编写了这段代码,以便在字符串开始时返回得分最高的单词,但是当我计算出所有单词并想要显示所有结果时,我发现所有结果都是:NaN

function high(x) {
  var words = x.split(' ');
  var y;
  var num = [];
  for (var i = 0; i < words.length; i++) {
    y = words[i].split('');
    for (var d = 0; d < words[i].length; d++) {
      if (y[d] == 'a') num[i] += 1;
      else if (y[d] == 'b') num[i] += 2;
      else if (y[d] == 'c') num[i] += 3;
      else if (y[d] == 'd') num[i] += 4;
      else if (y[d] == 'e') num[i] += 5;
      else if (y[d] == 'f') num[i] += 6;
      else if (y[d] == 'g') num[i] += 7;
      else if (y[d] == 'h') num[i] += 8;
      else if (y[d] == 'i') num[i] += 9;
      else if (y[d] == 'j') num[i] += 10;
      else if (y[d] == 'k') num[i] += 11;
      else if (y[d] == 'l') num[i] += 12;
      else if (y[d] == 'm') num[i] += 13;
      else if (y[d] == 'n') num[i] += 14;
      else if (y[d] == 'o') num[i] += 15;
      else if (y[d] == 'p') num[i] += 16;
      else if (y[d] == 'q') num[i] += 17;
      else if (y[d] == 'r') num[i] += 18;
      else if (y[d] == 's') num[i] += 19;
      else if (y[d] == 't') num[i] += 20;
      else if (y[d] == 'u') num[i] += 21;
      else if (y[d] == 'v') num[i] += 22;
      else if (y[d] == 'w') num[i] += 23;
      else if (y[d] == 'x') num[i] += 24;
      else if (y[d] == 'y') num[i] += 25;
      else num[i] += 26;
    }
  }
  console.log(...num);
}

high("what time are we climbing up the volcano");

2 个答案:

答案 0 :(得分:1)

您必须先初始化num[i],然后才能进行+=

function high(x) {
  var words = x.split(' ');
  var y;
  var num = [];
  for (var i = 0; i < words.length; i++) {
    y = words[i].split('');
    for (var d = 0; d < words[i].length; d++) {
      if (!num[i]) num[i] = 0; // <--- Add this
      if (y[d] == 'a') num[i] += 1;
      else if (y[d] == 'b') num[i] += 2;
      else if (y[d] == 'c') num[i] += 3;
      else if (y[d] == 'd') num[i] += 4;
      else if (y[d] == 'e') num[i] += 5;
      else if (y[d] == 'f') num[i] += 6;
      else if (y[d] == 'g') num[i] += 7;
      else if (y[d] == 'h') num[i] += 8;
      else if (y[d] == 'i') num[i] += 9;
      else if (y[d] == 'j') num[i] += 10;
      else if (y[d] == 'k') num[i] += 11;
      else if (y[d] == 'l') num[i] += 12;
      else if (y[d] == 'm') num[i] += 13;
      else if (y[d] == 'n') num[i] += 14;
      else if (y[d] == 'o') num[i] += 15;
      else if (y[d] == 'p') num[i] += 16;
      else if (y[d] == 'q') num[i] += 17;
      else if (y[d] == 'r') num[i] += 18;
      else if (y[d] == 's') num[i] += 19;
      else if (y[d] == 't') num[i] += 20;
      else if (y[d] == 'u') num[i] += 21;
      else if (y[d] == 'v') num[i] += 22;
      else if (y[d] == 'w') num[i] += 23;
      else if (y[d] == 'x') num[i] += 24;
      else if (y[d] == 'y') num[i] += 25;
      else num[i] += 26;
    }
  }
  console.log(...num);
}

high("what time are we climbing up the volcano");

答案 1 :(得分:1)

您需要将所有数组索引设置为0。您可以使用Array(words.length).fill(0)

function high(x) {
  var words = x.split(' ');
  var y;
  var num = Array(words.length).fill(0);
  for (var i = 0; i < words.length; i++) {
    y = words[i].split('');
    for (var d = 0; d < words[i].length; d++) {
      if (y[d] == 'a') num[i] += 1;
      else if (y[d] == 'b') num[i] += 2;
      else if (y[d] == 'c') num[i] += 3;
      else if (y[d] == 'd') num[i] += 4;
      else if (y[d] == 'e') num[i] += 5;
      else if (y[d] == 'f') num[i] += 6;
      else if (y[d] == 'g') num[i] += 7;
      else if (y[d] == 'h') num[i] += 8;
      else if (y[d] == 'i') num[i] += 9;
      else if (y[d] == 'j') num[i] += 10;
      else if (y[d] == 'k') num[i] += 11;
      else if (y[d] == 'l') num[i] += 12;
      else if (y[d] == 'm') num[i] += 13;
      else if (y[d] == 'n') num[i] += 14;
      else if (y[d] == 'o') num[i] += 15;
      else if (y[d] == 'p') num[i] += 16;
      else if (y[d] == 'q') num[i] += 17;
      else if (y[d] == 'r') num[i] += 18;
      else if (y[d] == 's') num[i] += 19;
      else if (y[d] == 't') num[i] += 20;
      else if (y[d] == 'u') num[i] += 21;
      else if (y[d] == 'v') num[i] += 22;
      else if (y[d] == 'w') num[i] += 23;
      else if (y[d] == 'x') num[i] += 24;
      else if (y[d] == 'y') num[i] += 25;
      else num[i] += 26;
    }
  }
  console.log(...num);
}

您还可以将代码重写为

function high(sentence) {
  const words = sentence.split(' ');
  const num = Array(words.length).fill(0);
  for (let i = 0; i < words.length; ++i) {
    const word = words[i];
    for (let j = 0; j < word.length; ++j) {
      num[i] += word.charCodeAt(j) - 96;
    }
  }
  console.log(...num);
}

high("what time are we climbing up the volcano");