我正在研究javascript-koans,這是AboutApplyingWhatWeHaveLearnt.js的第一個挑戰。目標是在功能上編寫代碼 - 給出一個必要的答案 - 去除沒有蘑菇和堅果的產品,將它們推到一個新的數組中,並獲得該數組的長度。這裏是我正在使用的數據集:在_.filter中使用_.every
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 }
];
,這裏是從挑戰指導:)
解決使用過濾器()&所有(/任何()
我堅持使用每個內部過濾器(推,長度等不是問題)。我可以在沒有堅果的情況下篩選出條目,並且使用每個(所有的別名),在每個產品的索引中搜索每個產品的配料陣列,如果陣列包含「蘑菇」,則返回true/false。但是,我想使用過濾器的每個內部,所以我不必使用循環。這是我想到的,但它沒有返回任何條目:
_.filter(products, function(product) {
if(_.every(product.ingredients, function(ingredient) {ingredient !== "mushrooms"})){
return product;
}
})
我試圖做甚至可能嗎?任何指導非常感謝。
什麼是'altArray'在這裏做什麼? –
對於這部分問題:「刪除沒有蘑菇和堅果的產品,將它們推向新陣列」 – tanenbring
哈,我錯過了containsNuts部分數據。請參閱@ torazaburo的更好實施答案。 – tanenbring