我有以下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开头的数据或我传递的任何参数,我需要从它开始的数据
答案 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.filter
和Array.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;
}