使用JavaScript在对象内部查找特定字符串
在JavaScript上,我有以下JSON:使用JavaScript在对象内部查找特定字符串,javascript,jquery,string,json,Javascript,Jquery,String,Json,在JavaScript上,我有以下JSON: var mJSON = { "monster":[ {"id":"150","name":"Richard"}, {"id":"100","name":"Gregory"}, {"id":"200","name":"Rachel"}, {"id":"250","name":"Mike"} ] } 我需要通过用户输入的字符串来细化这个对象。例如:“100”。 结果应该是一
var mJSON = {
"monster":[
{"id":"150","name":"Richard"},
{"id":"100","name":"Gregory"},
{"id":"200","name":"Rachel"},
{"id":"250","name":"Mike"}
]
}
我需要通过用户输入的字符串来细化这个对象。例如:“100”。
结果应该是一个新的JSON,如下所示:
var zJSON = {
"monster":[
{"id":"100","name":"Gregory"}
]
}
var mJSON = {
"monster":[
{"id":"150","name":"Richard"},
{"id":"100","name":"Gregory"},
{"id":"200","name":"Rachel"},
{"id":"250","name":"Mike"}
]
};
var searchTerm = "100";
var result = mJSON.monster.filter(function(e){
// if you want loose(r) searches, you could use a regex here
// rather than explicit equality
if(e.id == searchTerm)
{
return true;
}
});
console.log(result);
我试着在谷歌上寻找一种简单的方法,通过JavaScript对象搜索字符串,但没有成功。据我所知,没有什么比jQuery的$.inArray
更好的了。有人知道吗?
我正在考虑将这个JSON转换成一个字符串,对用户输入的值进行grep,然后再次将字符串转换成JSON,但是我认为这对于一些容易实现的事情来说太麻烦了。为什么不直接循环数组删除不匹配的内容?为什么不直接循环数组删除不匹配的内容?如何使用 JQuery.map()将函数应用于数组(
monsters
)的每个参数,并生成包含函数返回值的新数组。在这种情况下,重要的是,如果函数返回null
,则从结果数组中删除元素
编辑:
正如@Jan在他的评论中善意地建议的那样,更适合!以下是怪物的代码示例:
var id = 100;
var result = $.grep(monsters, function(monster){
return monster.id == id;
});
使用如何
JQuery.map()将函数应用于数组(monsters
)的每个参数,并生成包含函数返回值的新数组。在这种情况下,重要的是,如果函数返回null
,则从结果数组中删除元素
编辑:
正如@Jan在他的评论中善意地建议的那样,更适合!以下是怪物的代码示例:
var id = 100;
var result = $.grep(monsters, function(monster){
return monster.id == id;
});
如果不使用库,您可以执行以下操作:
var zJSON = {
"monster":[
{"id":"100","name":"Gregory"}
]
}
var mJSON = {
"monster":[
{"id":"150","name":"Richard"},
{"id":"100","name":"Gregory"},
{"id":"200","name":"Rachel"},
{"id":"250","name":"Mike"}
]
};
var searchTerm = "100";
var result = mJSON.monster.filter(function(e){
// if you want loose(r) searches, you could use a regex here
// rather than explicit equality
if(e.id == searchTerm)
{
return true;
}
});
console.log(result);
如果不使用库,您可以执行以下操作:
var zJSON = {
"monster":[
{"id":"100","name":"Gregory"}
]
}
var mJSON = {
"monster":[
{"id":"150","name":"Richard"},
{"id":"100","name":"Gregory"},
{"id":"200","name":"Rachel"},
{"id":"250","name":"Mike"}
]
};
var searchTerm = "100";
var result = mJSON.monster.filter(function(e){
// if you want loose(r) searches, you could use a regex here
// rather than explicit equality
if(e.id == searchTerm)
{
return true;
}
});
console.log(result);
var mJSON={
“怪物”:[
{“id”:“150”,“name”:“Richard”},
{“id”:“100”,“name”:“Gregory”},
{“id”:“200”,“name”:“Rachel”},
{“id”:“250”,“name”:“Mike”}
]
};
var searhKey=“100”;
var found=false,i=0,pos=-1,l=MJSON.monster.length;
而(!found&&i
var mJSON={
“怪物”:[
{“id”:“150”,“name”:“Richard”},
{“id”:“100”,“name”:“Gregory”},
{“id”:“200”,“name”:“Rachel”},
{“id”:“250”,“name”:“Mike”}
]
};
var searhKey=“100”;
var found=false,i=0,pos=-1,l=MJSON.monster.length;
而(!found&&i
使用grep
方法。例如:
var obj = {
monster: [
{ id: "150", name: "Richard" },
{ id: "100", name: "Gregory" },
{ id: "200", name: "Rachel" },
{ id: "250", name: "Mike" }
]
};
var input = "100";
var filtered = {
monster: $.grep(obj.monster, function(e){
return e.id == input;
})
};
使用
grep
方法。例如:
var obj = {
monster: [
{ id: "150", name: "Richard" },
{ id: "100", name: "Gregory" },
{ id: "200", name: "Rachel" },
{ id: "250", name: "Mike" }
]
};
var input = "100";
var filtered = {
monster: $.grep(obj.monster, function(e){
return e.id == input;
})
};
A+1表示链接(和示例),但是这个名称不正确的构造应该称为
flatMap
,因为它更好地反映了语义。不要使用jquery.map。使用jquery.grep!A+1表示链接(和示例),但是这个名称不正确的构造应该称为flatMap
,因为它更好地反映了语义。不要使用jquery.map。使用jquery.grep!这不是一个“JSON对象”,而是一个对象文本。JSON是一种表示数据的文本格式。你说得对。谢谢你指出这一点。:-)这不是一个“JSON对象”,而是一个对象文本。JSON是一种表示数据的文本格式。你说得对。谢谢你指出这一点。:-)+1但是,这在标准ECMAScript ed3中不起作用filter
是在ECMAScript第5版中添加的(有些浏览器可能支持更长时间),因此在开发时需要考虑到这一点。很高兴知道。。实际上没有检查这是在哪个规范中引入的:)+1,但是这在标准ECMAScript ed3中不起作用filter
是在ECMAScript第5版中添加的(有些浏览器可能支持更长时间),因此在开发时需要考虑到这一点。很高兴知道。。实际上没有检查这是在哪个规范中引入的:)