2016-06-30 2 views
0

Я не знаю, json, у меня есть инструкция цикла. Мне нужны только отдельные данные. Как написать инструкцию if в JSON. Пожалуйста, помогите мне,Как написать инструкцию if в JSON?

function myFunction(response) { 
     var arr = JSON.parse(response); 
     var i; 
     var out = "<table>";  
     for(i = 0; i < arr.length; i++) { 
      out += "<tr><td> " + 
      arr[i].offerPercentage + 
      "</td><td>" + 
      arr[i].offerName +  
      "</td></tr>"; 
     }enter code here 
     out += "</table>"; 
     document.getElementById("id01").innerHTML = out; 
    } 
+2

Пожалуйста, объясните, что вы имеете в виду. JSON - это формат файла, а не язык программирования, поэтому оператор if в JSON не имеет очевидного значения. (О, и 'arr [0]' должно быть, вероятно, 'arr [i]') –

+0

Ваш вопрос очень неясен. Не могли бы вы добавить какой-то контекст относительно того, где вы хотите добавить оператор if, и какая именно цель? JSON - это не язык. JSON - это то, как вы представляете объекты в javascript, хотя широко используется в качестве формата хранения. Код, который вы опубликовали, выглядит как код javascript. –

ответ

-4

Edit: Теперь, это понятно, что вы хотите, чтобы петля над только одного элемента, изменить количество раз для перебора - в настоящее время он будет перебирать весь массив, только перебирать одно изменение arr.length к 1 (или однако многие элементы, которые вы хотите отобразить):

function myFunction(response) { 
    var arr = JSON.parse(response); 
    var i; 
    var out = "<table>";  

    for(i = 0; i < 1; i++) { 
     out += "<tr><td> " + 
     arr[0].offerPercentage + 
     "</td><td>" + 
     arr[0].offerName +  
     "</td></tr>"; 
    } 

    out += "</table>"; 
    document.getElementById("id01").innerHTML = out; 
} 

или вы могли бы просто сослаться на первый результат напрямую, минуя петлю, которая будет иметь больше смысла:

function myFunction(response) { 
    var arr = JSON.parse(response); 
    var i; 
    var out = "<table>"; 

    // Only append if `arr` has at least one result. 
    if (typeof arr[0] !== 'undefined') { 
     out += "<tr><td> " + 
     arr[0].offerPercentage + 
     "</td><td>" + 
     arr[0].offerName +  
     "</td></tr>"; 
    } 

    out += "</table>"; 
    document.getElementById("id01").innerHTML = out; 
} 

Старый Ответ: Объекты в JavaScript, не имеют .length свойство.

Для цикла по объекту, используйте for...in синтаксис:

for (var offer in arr) { 
    // `offer.offerPercentage` and `offer.offerName` will be available here. 
} 

Если что возвращается является на самом деле массив, ваш вопрос не ваш синтаксис, это тот факт, что вы используете arr[0] в каждый цикл, а не arr[i].

+1

'arr.length' отлично работает в простом javascript, при условии, что обработчик json является массивом. Пожалуйста, проверьте перед публикацией. Ваши ответы могут вводить в заблуждение. –

+0

Извините @AnkitKhettry, но вы ошибаетесь. Пожалуйста, перечитайте мой ответ, прежде чем сказать, что я неправ? – scottgearyau

+1

'var a = '[{" First_name ":" Allan "," Last_name ":" Hernandez "," Date_of_birth ":" 1981-01-19 "," Height ": 178}, {" First_name ":" Harley "," Last_name ":" Smith "," Date_of_birth ":" 1988-05-21 "," Height ": 185}] ';' Это действительный json. для этого работает свойство длины. В вопросе никогда не упоминалось, не разбирается ли json в массиве. Infact, из кода, о котором идет речь, довольно очевидно, что json анализируется _IS_ массивом. Как я уже сказал, ваш ответ может ввести в заблуждение. –

Смежные вопросы