Задача на JS - помогите реализовать

Рейтинг: -6Ответов: 2Опубликовано: 20.01.2023

Помогите реализовать правильно. Яндекс запускает сеть автономных дронов для доставки пиццы и хочет, чтобы вы создали гибкую систему вознаграждений (ПиццаБаллы™), которую можно настроить в будущем. Правила просты: если клиент сделал не менее N заказов по цене не менее Y, он получает бесплатную пиццу! Создайте функцию, которая принимает объект клиентов, минимальное количество заказов и минимальную цену заказа. Верните список клиентов, которые имеют право на бесплатную пиццу. Например:

let clientsPizzas = {
  "Ivan": [22, 30, 11, 17, 15, 52, 27, 12],
  "Boris": [5, 17, 30, 33, 40, 22, 26, 10, 11, 45]
}

function(clientsPizzas, 5, 20) ➞ ["Boris"]
function(clientsPizzas, 3, 10) ➞ ["Ivan", "Boris"]
function(clientsPizzas, 5, 100) ➞ []

Примечания: Отсортируйте возвращенный массив имен клиентов в алфавитном порядке.

Ответы

▲ 2

Верните список клиентов

Означает, что надо создать переменную типа массив, в которую будут помещаться клиенты, подходящие по условию

принимает объект клиентов

значит надо пробегаться будет по списку клиентов и их значениям. Этим занимается цикл и Object.entries()

for (const [name, values] of Object.entries(object1)) {
  
}

Внутри внешнего цикла, описанного выше, будет ещё один, внутренний, который пробегается по массиву (по values). Узнать подходит человек под условие легко:

  1. Объявляем счётчик до цикла (внутреннего) с начальным значением 0.
  2. В цикле проверяем через if условие Y
  3. Если соблюдается условие, то прибавляем счётчик
  4. За циклом проверяем, если счётчик равен или больше N, то человека добавляем в массив, объявленный в самом начале
▲ 1

Однострочник :)

const clientsPizzas = {
  "Ivan": [22, 30, 11, 17, 15, 52, 27, 12],
  "Boris": [5, 17, 30, 33, 40, 22, 26, 10, 11, 45]
};

const whoNeedFreePizza = (clients, minCount, minPrice) =>
  Object.keys(clients)
  .filter(name => clients[name].filter(amount => amount >= minPrice).length >= minCount)
  .sort()

console.log(whoNeedFreePizza(clientsPizzas, 5, 20)); // ["Boris"]
console.log(whoNeedFreePizza(clientsPizzas, 3, 10)); // ["Ivan", "Boris"] if sorted ["Boris", "Ivan"]
console.log(whoNeedFreePizza(clientsPizzas, 5, 100)); // []

Объяснений не будет, пока я не увижу вашу реализацию алгоритма Алексея Шиманского