【问题标题】:Wildcard Search in a collection with lodash使用 lodash 在集合中进行通配符搜索
【发布时间】:2017-05-13 02:46:40
【问题描述】:

我有一个如下所示的数组,我想进行通配符搜索并检索相应的值。这不会给我任何结果,如果有更好的方法可以帮助我。我在我的 nodejs 应用程序中使用 lodash 实用程序。

var allmCar = [
  {
    "_id": ObjectId("5833527e25bf78ac0f4ca30e"),
    "type": "mCar",
    "value": "ABDC",
    "__v": 0
  },
  {
    "_id": ObjectId("5833527e25bf78ac0f4ca30e"),
    "type": "mCar",
    "value": "XYZ ABD",
    "__v": 0
  },
  {
    "_id": ObjectId("5833527e25bf78ac0f4ca30e"),
    "type": "mCar",
    "value": "FGHJ",
    "__v": 0
  }
]

_.find(allmCar, {
  value: {
    $regex: 'XYZ'
  }
})

我最终使用 _.includes 如下

_.each(allmCar,function(car){
    if(_.includes('XYZ', car.value)===true)
    return car;
})

【问题讨论】:

  • 我认为allmCar 是一个数组,而不是一个对象。
  • @thefourtheye,是的,你是对的,它是一个数组。
  • 您是否正在寻找类似于我在回答中显示的内容?因为默认情况下,正则表达式不能与 _.find 一起使用
  • 您需要指定在此上下文中“更好”的含义。此外,这个问题可能适用于Code Review,只要 (a) 您的代码按预期工作,(b) 您的代码是真实代码,而不是示例代码,并且 (c) 您的代码包含在这个问题。如果您希望通过同行评审来改进代码的各个方面,请将其发布在 Code Review 上。

标签: javascript arrays node.js object lodash


【解决方案1】:

你可以对传递给_.find的函数做同样的事情,像这样

_.find(allmCar, function(mCar) {
  return /XYZ/.test(mCar.value);
});

或者用箭头函数,

_.find(allmCar, (mCar) => /XYZ/.test(mCar.value));

这会将传递给集合的所有项目的函数应用,如果一个项目返回true,则该项目将被返回。

【讨论】:

  • 感谢您的回复。这适用于通配符搜索吗?我仍然没有看到它返回任何价值。这个 .test 是做什么的,请你解释一下。
  • @AjaySrikanth RegExp#test 检查传递的字符串是否与正则表达式匹配。
猜你喜欢
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2019-03-08
相关资源
最近更新 更多