2015-11-28 2 views
0
var id = "displayImage1"; 
//my object 
var json = { 
    displayImage1: { 
    object: "style1" 
    }, 
    displayImage2: { 
    object: "style2" 
    }, 
    displayImage3: { 
    object: "style3" 
    } 
}; 

function JsonLoad(_id){ 
    checkImgCanvas = _id; 
    for (var i in json) { 
    if(i === checkImgCanvas){ 
     alert("yes got it"); 
    }else{ 
     alert("not object found"); 
    } 
    } 

} 

Я использую эту функцию, чтобы проверить, соответствует ли значение json-объекта значению id, если да загрузите «да получил», иначе загрузить «не объект найден». я получаю матч, но он также загружает «не объект найден» 2 раза, я понятия не имею, почему? он не должен загружать условие else, которое имеет совпадение в моем json-объекте.Получить данные объекта, загрузить 2 условия в то же время

как я сделать эту функцию, если матч нагрузка «да», если нет нагрузки еще условие. (Нагрузка раз)

Demo

+0

Замените цикл с 'если (_id в формате JSON) {}' – samsonthehero

ответ

0

Так как ваш цикл выполняется, даже после того, как вы нашли свой результат, вы получаете сообщение «no object found». Вы должны выйти из вашего цикла, как только вы нашли нужный вам результат и добиться того, что вы можете использовать break; после успеха оповещения сообщение

function JsonLoad(_id){ 
    var matchFound = false; 
    for (var i in json) { 
     if(i === _id) { 
      matchFound = true; 
      break; 
     } 
    } 

    if(matchFound) { 
     alert("yes got it"); 
    }else{ 
     alert("not object found"); 
    } 
} 
+0

идентификатор будет меняться зависит от того, что мне нужно проверить, если мой идентификатор был displayImage2 он загрузит «объект не найден» снова. есть ли другой способ, если проверка соответствия не загружает условие else? – Jung

+0

Обновленная логика в моем ответе, надеюсь, это то, чего вы ожидали. –

+0

спасибо, что нужно ~ действительно ценю. – Jung

0

Вы можете использовать Array.prototype.some()

The some() испытания метода ли какой-то элемент массив проходит тест, реализованный предоставленной функцией.

var json = { displayImage1: { object: "style1" }, displayImage2: { object: "style2" }, displayImage3: { object: "style3" } }; 
 

 
function JsonLoad(_id) { 
 
    !Object.keys(json).some(function (k) { 
 
     if (k === _id) { 
 
      document.write('yes got it<br>') 
 
      return true; 
 
     } 
 
    }) && document.write('not object found<br>'); 
 
} 
 

 
JsonLoad('displayImage0'); 
 
JsonLoad('displayImage1');

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