Uncaught ReferenceError: книги не определены - PullRequest
0 голосов
/ 12 февраля 2019

Напишите функцию checkBasket(), которая позволяет узнать, находится ли элемент в корзине или нет.

Вот корзина объектов:

amazonBasket = {
 glasses: 1,
 books: 2,
 floss: 100
}

Что я пробовал в моем JS:

function checkBasket(basket, lookingFor) {
   for(item of amazonBasket)
   {
       if(lookingFor===item){
           console.log("This item is in the basket")
       }else{
           console.log("This item is not in the basket")
       }
})
}

 checkBasket(amazonbasket, books)

т.е.:

checkBasket (amazonbasket, books)

вернется "Этот предмет в корзине"

Я не знаюЯ не понимаю, почему книги не определены.

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Используйте цикл for для объединения каждого объекта, затем используйте оператор if, чтобы проверить, существует ли объект в корзине

amazonBasket = {glasses: 1,books: 2,floss: 100}

function CheckBasket(lookingFor, basketToCheck){
  for(items in basketToCheck){
    if(items == lookingFor){
       alert("Item Found");
    }
  }
 }

 CheckBasket( "glasses", amazonBasket);
0 голосов
/ 12 февраля 2019

Проблема в том, что вы используете books (переменная), а не "books" (строка).Также проще использовать Object.keys.includes:

function checkBasket(basket, lookingFor) {
  if (Object.keys(basket).includes(lookingFor)) {
    console.log("This item is in the basket");
  } else {
    console.log("This item is not in the basket");
  }
}

amazonBasket = {
  glasses: 1,
  books: 2,
  floss: 100
}

checkBasket(amazonBasket, "books");
0 голосов
/ 12 февраля 2019

Вы используете словарь для хранения своих товаров, поэтому лучший выбор, чтобы проверить, есть ли товар в корзине, - это перебирать ключи этого словаря.Вы можете просто использовать Object.keys(obj), чтобы получить массив с ключами, а затем проверить, есть ли нужный продукт.

Имейте в виду, что вы не можете использовать books для поиска, только если вы ранее инициализировалиэта переменная выглядит следующим образом: let books = "books".В противном случае вы должны проверить строку «books», поскольку при сравнении будет выполнено автоматическое преобразование.

amazonBasket = {
  glasses: 1,
  books: 2,
  floss: 100
}

function checkBasket(basket, lookingFor) {
  let inBasket = Object.keys(basket);
  let itemFound = false;

  for (let i = 0; i < inBasket.length; ++i) {
    if (lookingFor === inBasket[i]) {
      itemFound = true;
      break;
    }
  }

  
  if (basket.hasOwnProperty(lookingFor)) {
    console.log("This item is in the basket")
  } else {
    console.log("This item is not in the basket")
  }
}

checkBasket(amazonBasket, "glasses");
checkBasket(amazonBasket, "soda");

Конечно, это не лучшее, что вы можете сделать.Словари в java-скрипте имеют метод hasOwnProperty, который проверяет, есть ли в словаре определенный ключ.Ниже у вас есть рабочий пример использования этого.

amazonBasket = {
  glasses: 1,
  books: 2,
  floss: 100
}

function checkBasket(basket, lookingFor) {
  if (basket.hasOwnProperty(lookingFor)) {
    console.log("This item is in the basket")
  } else {
    console.log("This item is not in the basket")
  }
}

checkBasket(amazonBasket, "glasses");
checkBasket(amazonBasket, "soda");

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...