JavaScript JavaScript Loops, Arrays and Objects Tracking Multiple Items with Arrays Useful Array Methods

Neil Nathan
Neil Nathan
Front End Web Development Techdegree Student 9,347 Points

Behaviour of code not as per exercise

The exact same code does not behave the same way as shown in the exercise.

when typing 'list' the list of items does not display on the page until after 'quit' is typed.

var inStock = [ 'apples', 'eggs', 'milk', 'cookies', 'cheese', 'bread', 'lettuce', 'carrot', 'broccoli', 'pizza', 'potato', 'crackers', 'onion', 'tofu', 'frozen dinner', 'cucumber']; var search;

function print(message) { document.write( '<p>' + message + '</p>'); }

while (true) { search = prompt("Search for a product in our store. Type 'list' to show all of the produce and 'quit' to exit"); search = search.toLowerCase(); if ( search === 'quit') { break; } else if ( search === 'list' ) { print( inStock.join(', ') ); } else { if ( inStock.indexOf( search ) > -1 ) { print( 'Yes, we have ' + search + ' in the store.'); } else { print( search + ' is not in stock.'); } } }

FYI I am using the sublime editor and not workspaces.

1 Answer

Brodey Newman
Brodey Newman
10,959 Points

Hello Neil!

I took a look at your program and noticed you are only breaking the 'while' loop when a user types 'quit' into the prompt.

Take a look at the edited code below, which seems to work fine for me.

function print(message) {
  document.write( '<p>' + message + '</p>');

}

var inStock = [ 'apples', 'eggs', 'milk', 'cookies', 'cheese', 'bread', 'lettuce', 'carrot', 'broccoli', 'pizza', 'potato', 'crackers', 'onion', 'tofu', 'frozen dinner', 'cucumber'];
var search;

while (true) {
  search = prompt("Search for a product in our store. Type 'list' to show all of the produce and 'quit' to exit");
  search = search.toLowerCase();

  if ( search === 'quit') {
    break;

  } else if ( search === 'list' ) {
    print( inStock.join(', ') );
    break;

  } else {
    if ( inStock.indexOf( search ) > -1 ) {
      print( 'Yes, we have ' + search + ' in the store.');
      break;

    } else {
      print( search + ' is not in stock.');
      break;

    }
  }
Mark Pryce
Mark Pryce
8,802 Points

Calling out break after every statement doesn't seem to work either, I do believe it is down to the browser behaviour, with a few tweaks I managed to get the program to work correctly in IE .. sorry Edge which originally showed the same behaviour, it seems chrome handles it differently, worth an investigation though.