Если не в JSON [Javascript]

#javascript #json

#javascript #json

Вопрос:

 [
 {"id":"1001","token":"12345678987654","name":"Name 1"},
 {"id":"1010","token":"876543245643","name":"Name 2"}
]
  

Я могу напечатать числа, которые существуют в JSON, следующим образом.

 for (let i = 0; i < users.length; i  ) {
    // same codes
}
  

Однако, если в JSON нет числа 1234, я хочу, чтобы появился элемент DIV. Элемент DIV обычно не отображается

 var number = 1234;
for (let i = 0; i < users.length; i  ) {
        if (users[i].id !== number) {
            document.getElementById('addBox').style.display = 'block';
        }
    }
  

Если в JSON нет 1234, я хочу, чтобы он появился. Это не обязательно должно отображаться для тех, кто существует.

Демонстрация на JSFiddle

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

1. итак .. в чем проблема?

2. users[i].id может не быть целым числом. Так что попробуйте if ( users[i].id !== 1234) .

3. Привет @Manav , число 1234 не существует в JSON. Итак, я хочу, чтобы появился элемент DIV. Но в моем коде это не отображается для 1234 . Элемент DIV отображается для других чисел. Если вы хотите, вы можете увидеть консоль в JSFiddle.

4. @Manav Итак, отображайте элемент DIV только в том случае, если Number 1234 недоступен в JSON

5. Вам необходимо проверить всех пользователей, прежде чем принимать окончательное решение, существует ли конкретный или нет

Ответ №1:

Вы используете strict not equal ( !== ) между строкой и числом:

 const id = "1001";
console.log(id !== 1001);
console.log(id !== "1001");  

Вышеизложенное должно продемонстрировать вам проблему.

Ответ №2:

Используйте Array.prototype.some():

 var users1=[
 {"id":"1001","token":"12345678987654","name":"Name 1"},
 {"id":"1010","token":"876543245643","name":"Name 2"}
];

var users2=[
 {"id":"1001","token":"12345678987654","name":"Name 1"},
 {"id":"1010","token":"876543245643","name":"Name 2"},
 {"id":"1234","token":"4876543245643","name":"Name 4"}
];

var number=1234;

console.log("number in users1 (number to string): " 
  users1.some(user=>user.id=="" number)
);
console.log("number in users2 (number to string): " 
  users2.some(user=>user.id=="" number)
);
console.log("number in users1 (string to number): " 
  users1.some(user=> user.id==number)
);
console.log("number in users2 (string to number): " 
  users2.some(user=> user.id==number)
);  

Итак, для вашего случая:

 var number = 1234;
if(!users.some(user=>user.id=="" number))
  document.getElementById('addBox').style.display = 'block';
  

или:

 var number = 1234;
if(!users.some(user=> user.id==number))
  document.getElementById('addBox').style.display = 'block';
  

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

1. Привет, большое вам спасибо за ваш интерес, но мой вопрос заключается в том, что номер 1234 не существует users1 . Затем он должен указывать на addBox элемент. Итак, если в JSON нет 1234, должно появиться «addBox».

2. @Emre7, моя ошибка, исправлено: добавлено ! (нет). Дайте мне знать, работает ли это для вас сейчас. Если это так: выберите и проголосуйте ?!? Заранее благодарю вас!

3. Я пытался, но не могу. Мне нужно минимум 15 баллов, а у меня 13 баллов.

4. @Emre7, как я уже сказал … 🙂 Надеюсь, ты вспомнишь меня, когда доберешься туда — очень скоро!