2016-09-13 85 views
1

Lodash今天新的新。我在這裏找到了一篇很簡單的文章,通過它的鍵過濾對象。 SO PostLodash處理器獲取對象的關鍵值

所以我想要做的是類似的,但我想要的價值。我的應用程序爲用戶提供了多種用於調製飲料的選項。至少他們必須選擇一個選項。當他們沒有選擇一個選項時,我想提醒他們,他們必須這麼做一個基本的if/else就是我所要做的。

我的對象:

var pref = { 
    'strong': $('#strong').find(':selected').val() === 'Yes', 
    'salty': $('#salty').find(':selected').val() === 'Yes', 
    'bitter': $('#bitter').find(':selected').val() === 'Yes', 
    'sweet': $('#sweet').find(':selected').val() === 'Yes', 
    'fruity': $('#fruity').find(':selected').val() === 'Yes' 
}; 

當用戶選擇什麼我的每一個鍵值會讀false

此刻我的驗證碼:

function validateInputs(pref) { 
var emptyFields = _.filter(pref, function(value, key) { 
    if (emptyFields.key === false) { 
    alert('You must select at least one option.'); 
    } else { 
    // run program 
    randomDrink = myBartender.createDrink(pref); 
    } 
}); 
} 

所以我希望能夠通過價值來過濾說:

if(all keys are false) {alert} else {run the program} 

是否有一個處理程序將返回我的鍵值LoDash?如果您發現我正在嘗試做的任何明顯的錯誤,請告訴我。我從來沒有嘗試過濾這樣的對象,所以學習正在進行中!

回答

1

這裏是Lodash docs

  1. _.values(pref) //返回[TRUE,FALSE FALSE,FALSE]

  2. _.compact([true, false, false, false]) //返回[TRUE]

  3. _.isEmpty //檢查數組爲空

if(_.isEmpty(_.compact(_.values(pref)))) {alert} else {run the program};

+0

非常感謝!我一直在閱讀文檔,試圖找到合適的處理程序。我感謝幫助像魅力一樣工作! – rockchalkwushock