Javascript 带有输入值的JSON对象索引

Javascript 带有输入值的JSON对象索引,javascript,jquery,json,Javascript,Jquery,Json,如何使用输入值获取json对象的索引 因此,当用户输入为2时,我的Javascript将打印JSON中id为2、索引为1的第二个问题,然后当他单击next时,他将得到id为3、索引为2的第三个问题,以此类推 但是因为我需要在我的课程中添加一些问题(许多主题),我不能只是一遍又一遍地更改id或者在最后一个问题之后添加问题 所以我需要使用id搜索问题。。。不是索引号。因此,如果用户输入为2,我的js schould将打印JSON中id为2和索引为2的第三个问题,然后当他单击next时,他将得到id为

如何使用输入值获取json对象的索引

因此,当用户输入为2时,我的Javascript将打印JSON中id为2、索引为1的第二个问题,然后当他单击next时,他将得到id为3、索引为2的第三个问题,以此类推

但是因为我需要在我的课程中添加一些问题(许多主题),我不能只是一遍又一遍地更改id或者在最后一个问题之后添加问题

所以我需要使用id搜索问题。。。不是索引号。因此,如果用户输入为2,我的js schould将打印JSON中id为2和索引为2的第三个问题,然后当他单击next时,他将得到id为9和索引为3的第四个问题,以此类推

HTML-输入值(用户选择id号):

Json:

已尝试(jQuery):


对于快速输出,我尝试使用“alert”,但每次我输入一些数字,结果都是-1??

您可以使用
find()
在数组中查找项目。它接受一个函数,将每个项传递给函数,并将返回函数返回的第一个对象
true
。因此,如果您想查找问题id 2,您可以:

let qs={“Math”:[{“title”:“Math”,“subtitle”:“some2”,“id”:“1”,“question”:“2+2:”,“opt01:“5”,“opt02:”22”,“opt03:”4”,“opt04:”3”,“opt05:”1”,“correct:”4“},{“title”:“Math”,“subtitle”:“subtitle”:“some2”,“id:”4”,“question:“2+12:”,“opt01:”5”,“opt02:”22”,“opt03:“14”,“opt04”,“opt05:”5:”“1”、“正确的”:“14”、“4”、“opt04”:“3”、“opt05”:“1”、“正确的”:“23”;“一些”、“副标题”:“数学”、“副标题”:“一些”、“副标题”:“一些”、“副标题”:“一些”、“副标题”:“一些”、“副标题2”、“副标题”:“9”、“问题”:“2-2:”、“opt01:”5”、“opt02:“22”、“opt03:”4”、“opt04:“0”、“opt05:”“,”正确“:”0“},{”标题“:”数学“,”副标题“:”一些“,”副标题“:”一些“,”副标题“,”一些2“,”id“:”15“,”问题“,”2+2)*10:”,“opt01:”5“,”opt02:”22“,”opt03:”40“,”opt04:”3“,”opt05:”1“,”正确“:”40“}”
函数getQuesionID(id){
返回qs.Math.find(q=>q.id=id)
}
//问题2

console.log(getQuesionID(2))
什么是
$(json.Math[val]).index({“id”:inputvalue})做什么?现在什么都不做:我试图找到ID=(inputvalue)由用户放置的问题的索引号。在我的json文件中。。。但是ye…即使我把$(json.Math).index({“id”:inputvalue})放进去;我仍然有像-1的答案,但谢谢输出。我不需要你的第二部分:D,因为我有不同的主题和子主题。所以,当用户选择例如id为44(索引=10)的quiestion时,after next(下一步)按钮将得到id为22(索引=11)的问题,因为它们位于相同的子主题中,或者在它之后。但是无论如何我用你的密码。。但是我得到的对象是我的输出:Dfunction getQuesionID(id){return json.Math.find(q=>q.id=id)}alert(getQuesionID(2));我的json数据位于question.json…文件中。。。。有12000行代码:D和使用PHP解码,我不能把它们全部放在我的主文件中:D@Piotr你得到这个对象是因为我们返回的是整个问题对象。您需要决定问题的哪一部分要
alert()
,例如
alert(getQuesionID(2.question)
alert(getQuesionID(2.title)
;是的,我有输出:D尝试每个数字getQuesionID(2)。问题,getQuesionID(5)。问题,但是。。。每次我的输出都是针对数据库中的第一个问题。。。
<input type="text" placeholder="Question Number" name="search" id="searchid" >
  <button type="submit" id="idnumber"><i class="fa fa-search"></i></button>
$.getJSON("question.json", function(response) {
      json = response;
      populate(json.Math[val]);

  });
{"Math":[
    {   "title":"Math",
        "subtitle": "some",
        "subtitle2" : "some2",
        "id": "1", 
        "question":"2+2:",
        "opt01": "5",
        "opt02": "22",
        "opt03": "4",
        "opt04": "3",
        "opt05": "1",
        "correct": "4"
         }, 
        { "title":"Math",
        "subtitle": "some",
        "subtitle2" : "some2",
        "id": "4", 
        "question":"2+12:",
        "opt01": "5",
        "opt02": "22",
        "opt03": "14",
        "opt04": "3",
        "opt05": "1",
        "correct": "14"
         },  { "title":"Math",
        "subtitle": "some",
        "subtitle2" : "some2",
        "id": "2", 
        "question":"21+2:",
        "opt01": "5",
        "opt02": "23",
        "opt03": "4",
        "opt04": "3",
        "opt05": "1",
        "correct": "23"
         },  { "title":"Math",
        "subtitle": "some",
        "subtitle2" : "some2",
        "id": "9", 
        "question":"2-2:",
        "opt01": "5",
        "opt02": "22",
        "opt03": "4",
        "opt04": "0",
        "opt05": "1",
        "correct": "0"
         },  { "title":"Math",
        "subtitle": "some",
        "subtitle2" : "some2",
        "id": "15", 
        "question":"(2+2)*10:",
        "opt01": "5",
        "opt02": "22",
        "opt03": "40",
        "opt04": "3",
        "opt05": "1",
        "correct": "40"
         }]}
   $("#idnumber").on('click', function(event) {
    inputvalue = $("#searchid").val();
      idinput = jQuery(json.Math[val]).index({"id": inputvalue });
            val = idinput;
          populate(json.Math[val]);
        });