我可以以某种方式改善它吗? 我想使其变得更容易,也许将来会引起循环中的问题,我想显示的问题不仅仅是10个。我试图使用带字符串的变量代替“ ,, idX”,但是它没有用。 我不想使用过多的if语句
这是我的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]);
});
答案 0 :(得分:2)
您可以使用for循环并使用id
访问属性,并将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);
答案 1 :(得分:1)
while
循环在这里非常简洁。
while(numberOfQuestions--) questionIDs.push(data['id' + (numberOfQuestions+1)].id);
答案 2 :(得分:-1)
您可以通过两种方式使用其键访问对象的值:
object.key
中您使用的data.id8.id
objec['key']
的类似数组的方式,所以data['ind8'].id
第二种方法是使用字符串访问值。所以你可以做某事。喜欢:
numberOfQuestions = data.numberOfQuestions;
questionIDs = []
questionIDs.push(data['id' + somenumber].id)
有了这些知识,您就可以优化代码。
for(let i = 1; numberOfQuestions >= i; i++){
questionIDs.push(data['id' + i)].id);
}