Javascript 如何在JSON中搜索和选择对象
考虑这样一个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中匹配项的整个对象。例如,当我搜
[{
"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;
});