Я работаю над javascript-koans, первым вызовом AboutApplyingWhatWeHaveLearnt.js. Цель состоит в том, чтобы написать код функционально - дается императивный ответ - который удаляет продукты, у которых нет грибов и орехов, подталкивает их к новому массиву и получает длину этого массива. Вот набор данных Я работаю с:Использование _.внутри внутри _.filter
products = [
{ name: "Sonoma", ingredients: ["artichoke", "sundried tomatoes", "mushrooms"], containsNuts: false },
{ name: "Pizza Primavera", ingredients: ["roma", "sundried tomatoes", "goats cheese", "rosemary"], containsNuts: false },
{ name: "South Of The Border", ingredients: ["black beans", "jalapenos", "mushrooms"], containsNuts: false },
{ name: "Blue Moon", ingredients: ["blue cheese", "garlic", "walnuts"], containsNuts: true },
{ name: "Taste Of Athens", ingredients: ["spinach", "kalamata olives", "sesame seeds"], containsNuts: true }
];
А вот руководство с вызовом:
решить с помощью фильтра() & все()/любой()
Я застрял на использовании каждого внутреннего фильтра (толчок, длина и т. Д. Не проблема). Я могу отфильтровать записи без орехов и, используя каждый (псевдоним all), искать массив ингредиентов каждого продукта с индексом каждого отдельного продукта, возвращая true/false, если массив содержит «грибы». Тем не менее, я хочу использовать каждую внутреннюю часть фильтра, поэтому мне не нужно использовать цикл. Это то, что я придумал, но он не возвращает никаких записей:
_.filter(products, function(product) {
if(_.every(product.ingredients, function(ingredient) {ingredient !== "mushrooms"})){
return product;
}
})
Является ли то, что я пытаюсь сделать даже возможным? Любое руководство очень ценится.
Что здесь делает 'altArray'? –
Для этой части проблемы: «которая удаляет продукты, у которых нет грибов и орехов, выталкивает их в новый массив» – tanenbring
Ха, я пропустил часть containsNuts. См. Ответ @ torazaburo для лучшей реализации. – tanenbring