Weilin Hong
Weilin Hong

Reputation: 41

Can I use 2 if statements in a while loop?

I try to get Found (name) grade is (grade) but seems like the code only work for the first person which is Bob, but when it is George, it said not found.

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);

Upvotes: 0

Views: 54

Answers (2)

epascarello
epascarello

Reputation: 207531

You need to do the check outside the loop

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);

Most people would use 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);

Upvotes: 1

Shir Gans
Shir Gans

Reputation: 2027

If you Found, you should immediately return, and not go through the whole loop

Upvotes: 0

Related Questions