Javascript 如何在JSON中搜索和选择对象

Javascript 如何在JSON中搜索和选择对象,javascript,regex,json,node.js,Javascript,Regex,Json,Node.js,考虑这样一个JSON: [{ "type": "person", "name": "Mike", "age": "29" }, { "type": "person", "name": "Afshin", "age": "21" }, { "type": "something_else", "where": "NY" }] 我想用一个键(例如type='person')搜索JSON值,然后选择JSON中匹配项的整个对象。例如,当我搜

考虑这样一个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。

使用

$.grep(jsonarrayobj,function(n, i){
   if(n.type==="person")
{}
})
使用:


如果您的数据集非常大(例如10K左右),考虑过滤/分页服务器端。

< P>如果需要通过集合扫描多次,下面的一次构造开销可能是值得的。 基于类型的值使用哈希。将当前数据结构转换为哈希映射

var哈希映射={

})

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

希望这对您有所帮助。

纯javascript:

var results = dataset.filter(function(p) { 
    if(p.type == 'person') 
    return true; 
});

这不是JSON。用TypeError测试它:Object#没有“filter”方法你确定它在NodeJs中可用吗?@AfshinMehrabani-当然它在NodeJs中可用。您实际使用的是上面示例中的数组还是包装在容器对象中?谢谢,这似乎是一个很好的解决方案,但如果我们有一个嵌套对象怎么办?@AfshinMehrabani如果您希望使用任意嵌套级别,您需要比普通散列更丰富的数据结构-例如,一个。
var results = dataset.filter(function(p) { 
    if(p.type == 'person') 
    return true; 
});