使用类似查询的对象过滤器数组下划线

Underscore filter array of object using like query

本文关键字:对象 过滤器 数组 下划线 查询      更新时间:2023-09-26

>我有下面的Json。

{
  "results": [
    {
      "id": "123",
      "name": "Some Name"
    },
    {
      "id": "124",
      "name": "My Name"
    },
    {
      "id": "125",
      "name": "Johnson Johnson"
    },
    {
      "id": "126",
      "name": "Mike and Mike"
    },
    {
      "id": "201",
      "name": "abc xyz"
    },
    {
      "id": "202",
      "name": "abc befd"
    },
    {
      "id": "210",
      "name": "jki yuiu"
    },
    {
      "id": "203",
      "name": "asdfui uiuu"
    },
    {
      "id": "204",
      "name": "sfdhu uiu"
    },
    {
      "id": "205",
      "name": "asdfui uyu"
    }
  ]
}

使用下划线,我想使用 sql 来过滤上述数据,例如对 id 的查询。例如,如果传递"2",则应过滤 JSON 并返回包含以 2 开头的 id 的新 json,如果我通过 20,它应该返回 id 以 20 开头的新 JSON

类似于SQL喜欢查询,然后返回n个结果匹配,

更正:我想要以 id 2 开头的数据或我传递的任何参数,我需要以它开头的数据

试试这个

function getResult(keyToFilter, valueStartsWith){
    return _.filter(results, function(d){ return d[keyToFilter].startsWith(valueStartsWith); })
}
getResult("name", "asdfui");
[{
  "id": "203",
  "name": "asdfui uiuu"
},
{
  "id": "205",
  "name": "asdfui uyu"
}]

Array.prototype.filterArray.prototype.slice呢?(下划线有类似的功能,但是当可以用普通JS解决时,为什么要使用它们)

function sqlLikeFilter(data, id, maxn) {
    return data.result.filter(function(x) { return x.id == id; }).slice(0, maxn);
}
console.log(sqlLikeFilter(yourData, 125, 1));

试试这个

function(id){
    var result = _.filter(results, function(value) {
        return value.id === id
    })
    return result;
}