Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript在对象内部查找特定字符串_Javascript_Jquery_String_Json - Fatal编程技术网

使用JavaScript在对象内部查找特定字符串

使用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”。 结果应该是一

在JavaScript上,我有以下JSON:

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版中添加的(有些浏览器可能支持更长时间),因此在开发时需要考虑到这一点。很高兴知道。。实际上没有检查这是在哪个规范中引入的:)