【问题标题】:How search some object in other case-insensitive in JavaScript? Like _.where() only case-insensitive如何在 JavaScript 中搜索其他不区分大小写的对象?像 _.where() 一样只区分大小写
【发布时间】:2016-04-26 11:47:54
【问题描述】:

我需要通过两个属性和他在集合中的值来找到一些对象,比如在 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"
} 

并找到第二个对象作为结果。

这个逻辑在 loDashUnderscore 中提供了一个 _.where 函数,但他的搜索不会区分大小写。

【问题讨论】:

  • 尝试发布更多代码

标签: javascript object search lodash where-clause


【解决方案1】:

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

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();

【讨论】:

    猜你喜欢
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2013-04-17
    • 2017-12-01
    • 2010-09-15
    • 2013-06-15
    相关资源
    最近更新 更多