2016-03-10 4 views
5

में प्रोपेक और फ़िल्टर करने के लिए लॉजिकल लागू नहीं करें, मैं Ramda के साथ कार्यात्मक प्रोग्रामिंग हालांकि अपना तरीका महसूस कर रहा हूं और मैं कुछ आसान लगता है जैसे यह आसान होना चाहिए।रैमडा

मुझे एक सरणी में सभी प्रविष्टियां चाहिए जहां एक संपत्ति एक मान के बराबर नहीं है।

उदाहरण के लिए शुद्ध js में

const filtered = source.filter(entry => entry.name !== 'something'); 

Ramda में एक propEq तो मैं आसानी से मिल सभी तत्वों को एक मान से मेल करना जैसे

const filtered = R.filter(R.propEq('name','something'),source); 

लेकिन मैं नहीं देख सकते हैं कर सकते हैं कैसे उस के विपरीत, केवल मानों को वापस करने के लिए मान के बराबर नहीं है।

मुझे यकीन है कि यह बहुत आसान होना चाहिए हूँ, लेकिन मैं एक समारोह में बनाया गया यह करने के लिए देखने के लिए, सबसे करीब मैं के साथ आ सकते हैं संघर्ष कर रहा हूँ है:

const others = R.filter(rate => rate.name !== name,res.rates); 

लेकिन मुझे यकीन है वहाँ हूँ एक बेहतर तरीका होना चाहिए?

उत्तर

7

हाँ, Ramda filter की एक रिवर्स reject कहा जाता है:

R.reject(R.propEq('name', 'something'))(source) 

आप Ramda REPL

+0

शानदार धन्यवाद पर यह देख सकते, मैं इसे करने का एक आसान तरीका नहीं था यकीन था :) – antfx

+2

यह भी देखें ['R.complement'] (http://ramdajs.com/docs/#complement)। – davidchambers

संबंधित मुद्दे