我可以在while循环中使用2条if语句吗?

时间:2019-10-26 21:18:02

标签: javascript

我尝试获得Found(名称)等级为(等级),但似乎代码仅适用于第一个人Bob,但是当它是George时,则说找不到。

var studentArray = [
  { 'name': 'Bob', 'grade': 87 },
  { 'name': 'Fred', 'grade': 82 },
  { 'name': 'George', 'grade': 93 },
  { 'name': 'Robert', 'grade': 85 }
];

function findStudent(studentName) {
  var i = 0; //var i = 0 should be inside
  var output = "";

  while (i < studentArray.length) {
    if(studentName === studentArray[i].name) {
      output = ( "Found " + studentName + " their grade is " + studentArray[i]['grade']);
    } else {
      output = ("Student " + studentName + " not found.");
    }
    i++;
  }

  return output;
}

var name = 'George';
var result = findStudent(name);
console.log(result);

2 个答案:

答案 0 :(得分:1)

您需要在循环外进行检查

var studentArray = [{ 'name': 'Bob', 'grade': 87 }, { 'name': 'Fred', 'grade': 82 }, { 'name': 'George', 'grade': 93 }, { 'name': 'Robert', 'grade': 85 }]


function findStudent(studentName) {
  var i = 0;
  var output = "";
  while (i < studentArray.length) {
    if (studentName === studentArray[i].name) {
      output = ("Found " + studentName + " their grade is " + studentArray[i]['grade']);
    }
    i++;
  }
  
  if (!output) {
    output = ("Student " + studentName + " not found.");
  }

  return output;
}
var name = 'George';
var result = findStudent(name);
console.log(result);

大多数人会使用find()

var studentArray = [{ 'name': 'Bob', 'grade': 87 }, { 'name': 'Fred', 'grade': 82 }, { 'name': 'George', 'grade': 93 }, { 'name': 'Robert', 'grade': 85 }]


function findStudent(studentName) {
  var out = studentArray
    .find(function (o) { 
      return o.name===studentName; 
    });
  return out
    ? `Found ${studentName} their grade is ${out.grade}` 
    : `Student ${studentName} not found.`
}
var name = 'George';
var result = findStudent(name);
console.log(result);

答案 1 :(得分:0)

如果找到,则应立即返回,而不要经历整个循环

相关问题