lodash - 通过提供两个值来查找所有对象

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 函数可以得到这个?

Max*_*rie 5

使用 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/