0

考虑这样的 JSON:

[{
    "type": "person",
    "name": "Mike",
    "age": "29"
},
{
    "type": "person",
    "name": "Afshin",
    "age": "21"
},
{
    "type": "something_else",
    "where": "NY"
}]

我想用一个键(例如type='person')在 JSON 值中搜索,然后在 JSON 中选择一个匹配项的整个对象。例如,当我搜索时,type='person'我期望这个值:

[{
  "type": "person",
  "name": "Mike",
  "age": "29"
},
{
  "type": "person",
  "name": "Afshin",
  "age": "21"
}]

因为它是一个非常大的 JSON 值,所以我不想在所有节点中进行暴力搜索,所以我认为唯一的方法是使用正则表达式,但我不知道如何编写正则表达式来匹配类似的东西以上。

我正在为应用程序使用NodeJs

4

4 回答 4

2

使用underscore.js#where

var results = _(yourObject).where({ type: 'person' })

如果您的数据集非常大[例如 10k 左右],请考虑在服务器端过滤/分页内容。

于 2013-07-30T11:22:24.220 回答
1

纯javascript:

var results = dataset.filter(function(p) { 
    if(p.type == 'person') 
    return true; 
});
于 2013-07-30T11:26:00.670 回答
0

如果需要对集合进行多次扫描,那么下面的一次构建开销可能是值得的。

使用基于类型值的散列。将当前数据结构转换为散列映射。

var hashMap ={

};

hashMap['person'] =[{},{}];

希望这对您有所帮助。

于 2013-07-30T11:25:07.300 回答
-2

利用

$.grep(jsonarrayobj,function(n, i){
   if(n.type==="person")
{}
})
于 2013-07-30T11:18:15.853 回答