我需要通过两个属性及其在集合中的值来找到一些对象,例如在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 功能,但他的搜索不会出现区分大小写。
答案 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();