> Как реализовать добавление рандомного товара в корзину и удаление его из ассортимента по клику? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: РСХБ

Стек: JavaScript

> Пример ответа

Для реализации добавления случайного товара в корзину и его удаления из ассортимента по клику можно использовать следующий подход на чистом JavaScript:

JAVASCRIPT
// Исходный массив товаров
const products = [
{ id: 1, name: 'Ноутбук', price: 50000 },
{ id: 2, name: 'Мышь', price: 1500 },
{ id: 3, name: 'Клавиатура', price: 3000 }
];
let cart = [];
// Функция для получения случайного товара
function getRandomProduct() {
if (products.length === 0) return null;
const randomIndex = Math.floor(Math.random() * products.length);
return products[randomIndex];
}
// Функция добавления случайного товара в корзину и удаления из ассортимента
function addRandomToCart() {
const product = getRandomProduct();
if (!product) {
console.log('Товары закончились');
return;
}
// Добавляем в корзину
cart.push(product);
// Удаляем из ассортимента
const productIndex = products.findIndex(p => p.id === product.id);
products.splice(productIndex, 1);
console.log(`Добавлен: ${product.name}`);
renderUI();
}
// Пример привязки к клику (например, на кнопке)
document.getElementById('addButton').addEventListener('click', addRandomToCart);
// Функция для обновления интерфейса (опционально)
function renderUI() {
console.log('Ассортимент:', products);
console.log('Корзина:', cart);
}

Ключевые моменты:

  • Используется Math.random() для выбора случайного индекса
  • Товар сначала добавляется в корзину, затем удаляется из ассортимента через splice()
  • Проверка на пустой массив предотвращает ошибки
  • Функция renderUI() обновляет отображение после каждого действия

Для реального проекта стоит добавить обработку состояния (например, через React или Vue) и визуальное обновление DOM вместо консольного вывода.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью