如何在JavaScript中搜索其他不区分大小写的对象?像_.where()仅不区分大小写

问题描述 投票:1回答:1

我需要通过两个属性及其在集合中的值来查找某个对象,例如在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函数,但是他的搜索将不区分大小写。

javascript object search lodash where-clause
1个回答
1
投票

如果您需要区分大小写,则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();
© www.soinside.com 2019 - 2024. All rights reserved.