我需要通过两个属性及其在集合中的值来查找某个对象,例如在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函数,但是他的搜索将不区分大小写。
如果您需要区分大小写,则where样式的语法将不起作用。最好的选择是设置一个通用函数,该通用函数生成并返回可由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();