Напишите функцию checkBasket(), которая позволяет узнать, находится ли товар в корзине или нет.
Вот корзина с предметами:
amazonBasket = {
glasses: 1,
books: 2,
floss: 100
}
Что я пробовал в своем JS:
function checkBasket(basket, lookingFor) {
for(item of amazonBasket)
{
if (lookingFor===item){
console.info("This item is in the basket")
}else{
console.info("This item is not in the basket")
}
})
}
checkBasket(amazonbasket, books)
то есть:
checkBasket(amazonbasket,книги)
он вернет "Этот товар в корзине"
Я не понимаю, почему книги не определены.
Не просто описывайте свой код, предоставьте полный пример, демонстрирующий проблему. У вас нет ни переменной с именем books, ни переменной с именем amazonbasket, поэтому обе они не определены.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы используете словарь для хранения своих продуктов, поэтому лучший способ проверить, находится ли продукт в корзине, — перебрать ключи этого словаря. Можно просто через Object.keys(obj) получить массив с ключами, потом проверить, есть ли там нужный товар.
Имейте в виду, что вы не можете использовать books для поиска, только если вы предварительно инициализировали эту переменную следующим образом: let 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.info("This item is in the basket")
} else {
console.info("This item is not in the basket")
}
}
checkBasket(amazonBasket, "glasses");
checkBasket(amazonBasket, "soda");Конечно, это не лучшее, что вы можете сделать. У словарей в java script есть метод hasOwnProperty, который проверяет, есть ли у словаря определенный ключ. Ниже у вас есть рабочий пример, использующий this.
amazonBasket = {
glasses: 1,
books: 2,
floss: 100
}
function checkBasket(basket, lookingFor) {
if (basket.hasOwnProperty(lookingFor)) {
console.info("This item is in the basket")
} else {
console.info("This item is not in the basket")
}
}
checkBasket(amazonBasket, "glasses");
checkBasket(amazonBasket, "soda");Ваше здоровье!
Используйте цикл for in для повторения каждого объекта, затем используйте оператор 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);
Проблема в том, что вы используете books (переменная), а не "books" (строка). Также проще использовать Object.keys.includes:
function checkBasket(basket, lookingFor) {
if (Object.keys(basket).includes(lookingFor)) {
console.info("This item is in the basket");
} else {
console.info("This item is not in the basket");
}
}
amazonBasket = {
glasses: 1,
books: 2,
floss: 100
}
checkBasket(amazonBasket, "books");
Единственный показанный
booksявляется собственностьюamazonBasket. Показать больше контекста кода, связанного с вызовомcheckBasket()согласно минимальный воспроизводимый пример