Javascript 带有输入值的JSON对象索引
如何使用输入值获取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):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为
对于快速输出,我尝试使用“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]);
});