@drtvader
Вечный студент

Как проверить JSON на наличие определённой строки?

Привет, как можно проверить JSON на наличие определенного элемента.
К примеру, у меня есть
{
            "id": "4",
            "name": "Weissgold-Verlobungsring mit Diamanten",
            "image": "/images/content/white-gold1.jpg",
            "oldprice": "14 500 €",
            "newprice": "16 100 €",
            "discount": "-10%"
        },
       {
            "id": "5",
            "name": "Gold-Verlobungsring mit Diamanten",
            "image": "/images/content/white-gold2.jpg",
            "oldprice": "110 500 €",
            "newprice": "16 100 €",
            "hit": "hit"
        },
        {
            "id": "6",
            "name": "Ring zur Verlobung mit Diamanten",
            "image": "/images/content/white-gold3.jpg",
            "oldprice": "110 500 €",
            "newprice": "16 100 €",
            "new": "new"
        },
        {
            "id": "7",
            "name": "Ring zur Verlobung mit Diamanten",
            "image": "/images/content/white-gold1.jpg",
            "oldprice": "110 500 €",
            "newprice": "16 100 €"
        },
        {
            "id": "8",
            "name": "Ring zur Verlobung mit Diamanten",
            "image": "/images/content/white-gold3.jpg",
            "oldprice": "110 500 €",
            "hit": "hit"
        }

Есть последняя строчка discount, hit, new, как проверить её наличие и осуществить вывод?

Попробовал вот так:
if (parseInt(data.discount) > 0) {
    html = '<div class="b-sale b-sale--list-product">' + data.discount + '</div>';
  }
else (parseInt(data.hit) > 0) {
   html = '<div class="b-sale b-sale--hit">' + data.hit+ '</div>';
}
, но вариант не работает.
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Во-первых, после else пропущен if для проверки другого условия
Во-вторых, parseInt("-10%") будет -10, что при сравнении > 0 даст ложь
В-третьих, parseInt("hit") будет NaN, которое при любом сравнении с чем угодно, в том числе c NaN даст ложь

Правильно проверять примерно так:
if('discount' in data && parseInt(data.discount) < 0) {
  //...
} else if(data.hit === 'hit') {
  //...
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы