如何在JavaScript中搜索其他case-insensetive中的某些对象?像_.where()只有case-insensetive

时间:2016-01-20 14:54:51

标签: javascript object search where lodash

我需要通过两个属性及其在集合中的值来找到一些对象,例如在loDash中:

_。where(collection,searchObject)

仅对不区分大小写。

请帮帮我,我该怎么做?

有对象:

[{
    "city": "New York, US",
    "name": "John",
    "address": "Allen Street, 0123",
},{
    "city": "New York, US",
    "name": "Dale",
    "address": "Barrow Street, 3210",
}];

我需要传递像

这样的参数
{ 
    "city": 'new york, US'
    "address": "Barrow street, 3210"
} 

并找到第二个对象。

此逻辑在 loDash 下划线中提供 _。where 功能,但他的搜索不会出现区分大小写。

1 个答案:

答案 0 :(得分:1)

如果您需要不区分大小写,则where-style语法将不起作用。最好的办法是设置一个通用函数来构建和返回filter()可以使用的iteratee函数。下面是一个使用带有不敏感标志的正则表达式的示例:

function filterInsensitive(property, regexp) {
  return _.flow(
    _.identity,
    _.partialRight(_.get, property),
    _.method('match', regexp)
  );
}

此函数非常通用,可以使用任何正则表达式作为过滤器,对任何属性值使用它。以下是将其用于数据的方法。

_(myColl)
  .filter(filterInsensitive('city', /NEW YORK, US/i))
  .filter(filterInsensitive('address', /barrow street, 3210/i))
  .value();