使用类似查询

时间:2016-03-02 09:09:35

标签: javascript underscore.js

我有以下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"
    }
  ]
}

使用Underscore我想使用像id这样的查询来过滤上面的数据。 例如,如果通过" 2"应该过滤json并返回一个新的json,其中包含以2开头的id,如果我传递20,则应返回id为20的新json

类似于sql之类的查询,然后返回 n 结果匹配,

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

3 个答案:

答案 0 :(得分:1)

试试这个

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"
}]

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

试试这个

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