Sometimes you need to filter an array of objects or perform other conditional logic based on a combination of factors. Ramda‘s where
function gives you a concise way to declaratively map individual predicates to object properties, that when combined, cover the various facets of your conditions. In this lesson, we‘ll look at how this powerful function can be used for scenarios requiring a complex predicate function.
const products = [ {name: ‘Jeans‘, price:80, category: ‘clothes‘, stock: 100}, {name: ‘Hoodie‘, price:50, category: ‘clothes‘, stock: 20}, {name: ‘Sneakers‘, price:120, category: ‘clothes‘, stock: 30}, {name: ‘Cards‘, price: 35, category: ‘games‘, stock: 10}, {name: ‘iPhone‘, price: 649, category: ‘electronics‘, stock: 5}, {name: ‘Sauce Pan‘, price: 100, category: ‘housewares‘, stock: 200} ] const predicate = R.where({ category: R.complement(R.equals(‘clothes‘)), // category is not clothes stock: R.lt(R.__, 50), // less than 50 price: R.gte(R.__, 100) // greater or equal than 100 }) const getResults = R.pipe(R.filter(predicate), R.pluck(‘name‘)) const result = getResults(products) console.log(result) document.getElementById(‘output‘).innerHTML = `${JSON.stringify(result)}`
时间: 2024-12-28 21:22:11