Задача на JS - помогите реализовать
Помогите реализовать правильно. Яндекс запускает сеть автономных дронов для доставки пиццы и хочет, чтобы вы создали гибкую систему вознаграждений (ПиццаБаллы™), которую можно настроить в будущем. Правила просты: если клиент сделал не менее 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). Узнать подходит человек под условие легко:
- Объявляем счётчик до цикла (внутреннего) с начальным значением 0.
- В цикле проверяем через
ifусловиеY - Если соблюдается условие, то прибавляем счётчик
- За циклом проверяем, если счётчик равен или больше
N, то человека добавляем в массив, объявленный в самом начале
Однострочник :)
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)); // []
Объяснений не будет, пока я не увижу вашу реализацию алгоритма Алексея Шиманского