Fai*_*yed 2 javascript json object lodash
我有一个包含产品详细信息的对象,包括类别、颜色、使用技巧和价格。现在,我想通过提供我的对象的最低价格和最高价格来查找所有对象:
const products = [{
name: 'Product 1',
usage: 'Home',
skill: 'Easy',
color: 'blue',
price: 100.00
}, {
name: 'Product 2',
usage: 'Home',
skill: 'Intermediate',
color: 'red',
price: 120.00
}, {
name: 'Product 3',
usage: 'Office',
skill: 'Intermediate',
color: 'green',
price: 190.00
}, {
name: 'Product 4',
usage: 'Office',
skill: 'Advanced',
color: 'blue',
price: 260.00
}, {
name: 'Product 5',
usage: 'Warehouse',
skill: 'Advanced',
color: 'white',
price: 320.00
}, {
name: 'Product 6',
usage: 'Farm',
skill: 'Intermediate',
color: 'red',
price: 120.00
}, {
name: 'Product 7',
usage: 'Space',
skill: 'Advanced',
color: 'green',
price: 150.00
}, {
name: 'Product 8',
usage: 'Bathroom',
skill: 'Easy',
color: 'black',
price: 9.00
}];
Run Code Online (Sandbox Code Playgroud)
假设我提供 minPrice = 100 和 maxPrice = 190 所以它应该返回我:
[{
name: 'Product 1',
usage: 'Home',
skill: 'Easy',
color: 'blue',
price: 100.00
}, {
name: 'Product 2',
usage: 'Home',
skill: 'Intermediate',
color: 'red',
price: 120.00
}, {
name: 'Product 3',
usage: 'Office',
skill: 'Intermediate',
color: 'green',
price: 190.00
}, {
name: 'Product 6',
usage: 'Farm',
skill: 'Intermediate',
color: 'red',
price: 120.00
}, {
name: 'Product 7',
usage: 'Space',
skill: 'Advanced',
color: 'green',
price: 150.00
}]
Run Code Online (Sandbox Code Playgroud)
是否有任何预定义的 lodash 函数可以得到这个?
使用 lodash,你可以像这样使用_.fliter():
_.filter(products, function(p) {
return p.price >= 100 && p.price <= 190;
});
Run Code Online (Sandbox Code Playgroud)
它将返回一个包含所有匹配出现的新数组。根据下面的示例,您可以将其存储在一个变量中,并对其进行任何您想做的事情。
您还可以包装_.filter()在函数中:
function filterProduct(minPrice, maxPrice) {
return _.filter(products, function(p) {
return p.price >= minPrice && p.price <= maxPrice;
});
}
Run Code Online (Sandbox Code Playgroud)
Jsfiddle 与您的示例在这里:https ://jsfiddle.net/maximelafarie/kps08L5x/4/