Точное значение из массива JSON

#javascript #jquery #json #loops

#javascript #jquery #json #циклы

Вопрос:

Попытка сопоставить значение со значением JSON путем записи цикла for, но каждый раз после завершения цикла возвращается только значение 2345. Где я ошибаюсь, кто-нибудь может мне помочь. И у меня есть термин, который динамически генерирует строковое значение.

 var mKey = doc.search.searchBy.split(",")[0].split("=")[1].replace(/s /, "").toLowerCase();
  

JSON:

 {
    "records" : {
        "cat1" : [
            {
                "id" : 1234,
                "label":"a"
            },
            {
                "id" : 2345,
                "label":"b"

            }
        ],
        "cat2" : {

            "id" : 12345,
            "label" : "c"
        }
    }
}
  

JS:

 var array = doc.records.cat1;
for (var i=0; i<array.length; i  ) {
    var oID = array[i].id.toString();
}
if (oID === "2345" amp;amp; mKey=="Apple") {
    console.log("Apple");
    break;
}
else if (oID === "1234" amp;amp; mKey=="Banana") {
    console.log("Banana")
}
else {
    console.log('other fruits');
} 
  

Комментарии:

1. это так, потому что первая сущность cat1 не имеет такого термина, как id, также включает в себя операторы if в цикле for .

Ответ №1:

Вам нужно поместить свой if оператор в for цикл так, чтобы он относился к текущей итерации:

 var array = doc.records.cat1;
for (var i = 0; i < array.length; i  ) {
    var oID = array[i].id.toString();

    if (oID === "2345") {
        console.log("success");
    }
    else if (oID === "1234") {
        console.log("error")
    }
    else {
        console.log('other');
    } 
}
  

Пример скрипки

Обратите внимание, что break оператор не имеет значения внутри if блока.

Ответ №2:

Я думаю, вы замкнули свой цикл не в том месте

 for (var i=0; i<array.length; i  ) {
    var oID = array[i].id.toString();

    if (oID === "2345") {
        console.log("success");
        break;
    }
    else if (oID === "1234") {
        console.log("error")
    }
    else {
        console.log('other');
    } 
}
  

Ответ №3:

Вся структура if попадает в цикл for

 var array = doc.records.cat1;
for (var i=0; i<array.length; i  ) {
    var oID = array[i].id.toString();

if (oID === "2345" amp;amp; mKey=="Apple") {
    console.log("Apple");
    break;
}
else if (oID === "1234" amp;amp; mKey=="Banana") {
    console.log("Banana")
}
else {
    console.log('other fruits');
} 

}
  

Комментарии:

1. в первый раз он возвращает условие if, а также условие else.