[英]Improving json decoding with jquery
Can I improve that somehow? 我可以以某种方式改善它吗? i want to make it easier, maybe in loop couse in future i want to display more questions than only 10. I tried to use variable with string instead of ,,idX" but it wasnt work. I dont want use too much if statements
我想让它更容易,也许将来会引起循环中的问题,我想显示的问题不只是10个。我试图使用带字符串的变量而不是“ ,, idX”,但是它没有用。我不想过多地使用if语句
this is my json: {"numberOfQuestions":2,"id1":{"id":"2"},"id2":{"id":"1"}} 这是我的json:{“ numberOfQuestions”:2,“ id1”:{“ id”:“ 2”},“ id2”:{“ id”:“ 1”}}
$.getJSON(apiUrl+'/api-V1/generateQuestions.php?category=math', function(data) {
numberOfQuestions = data.numberOfQuestions;
questionIDs = new Array();
if(numberOfQuestions>=1){
questionIDs.push(data.id1.id);
}
if(numberOfQuestions>=2){
questionIDs.push(data.id2.id);
}
if(numberOfQuestions>=3){
questionIDs.push(data.id3.id);
}
if(numberOfQuestions>=4){
questionIDs.push(data.id4.id);
}
if(numberOfQuestions>=5){
questionIDs.push(data.id5.id);
}
if(numberOfQuestions>=6){
questionIDs.push(data.id6.id);
}
if(numberOfQuestions>=7){
questionIDs.push(data.id7.id);
}
if(numberOfQuestions>=8){
questionIDs.push(data.id8.id);
}
if(numberOfQuestions>=9){
questionIDs.push(data.id9.id);
}
if(numberOfQuestions>=10){
questionIDs.push(data.id10.id);
}
loadQuestion(questionIDs[currentQuestion-1]);
});
You might use a for loop and access the property using id
and concatename the value of i
: 您可以使用for循环并使用
id
和concatename i
的值来访问属性:
for (let i = 1; i <= data.numberOfQuestions; i++) {
questionIDs.push(data['id' + i].id);
}
let questionIDs = []; let data = { "numberOfQuestions": 2, "id1": { "id": "2" }, "id2": { "id": "1" } } for (let i = 1; i <= data.numberOfQuestions; i++) { questionIDs.push(data['id' + i].id); } console.log(questionIDs);
while
循环在这里非常简洁。
while(numberOfQuestions--) questionIDs.push(data['id' + (numberOfQuestions+1)].id);
You can access values of an object using it's key in two ways: 您可以通过两种方式使用键来访问对象的值:
object.key
in your example data.id8.id
data.id8.id
使用object.key
的data.id8.id
objec['key']
so data['ind8'].id
objec['key']
的类似数组的方式,所以data['ind8'].id
In the second way you use a string to access your value. 在第二种方式中,您使用字符串来访问您的值。 So you could do sth.
所以你可以做某事。 like:
喜欢:
numberOfQuestions = data.numberOfQuestions;
questionIDs = []
questionIDs.push(data['id' + somenumber].id)
With this knowledge you can optimize the code. 有了这些知识,您就可以优化代码。
for(let i = 1; numberOfQuestions >= i; i++){
questionIDs.push(data['id' + i)].id);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.