JavaScript - Элемент массива не найден - PullRequest
1 голос
/ 08 апреля 2020

По какой-то причине результат здесь выглядит как ложный, но массив содержит этот конкретный dateId.

См. Код ниже:

var pollOptions = [
  {"dateId": "183738", "answer": false},
  {"dateId": "183738", "answer": true}
];

var theDate = "183738";
var doesDateExist = theDate in pollOptions


document.getElementById("demo").innerHTML = doesDateExist;

Ответы [ 3 ]

1 голос
/ 08 апреля 2020

Вы можете использовать метод .includes() в массиве, а не в `, который работает с объектами.

var pollOptions = [{"dateId": "183738", "answer": false}, {"dateId": "183738", "answer": true}];

var theDate = "183738";
var doesDateExist = pollOptions.map(item => item.dateId).includes(theDate);

document.getElementById("demo").innerHTML = doesDateExist;

Кроме того, я использую функцию .map() для потоковой передачи Ваш объект в массиве, содержащем только dateIds. Тогда мы можем использовать .includes()

1 голос
/ 08 апреля 2020

var pollOptions = [{"dateId": "183738", "answer": false}, {"dateId": "183738", "answer": true}];
var theDate = "183738";

var doesDateExist  = Boolean(pollOptions.find(function(item) {
   return item.dateId === theDate
}))

console.log(doesDateExist )
1 голос
/ 08 апреля 2020

in оператор работает для объектов (не для массивов). Вы можете использовать метод .some(), чтобы проверить наличие указанного значения c в массиве объектов:

var pollOptions = [
  {"dateId": "183738", "answer": false},
  {"dateId": "183738", "answer": true}
];

var theDate = "183738";
var doesDateExist = pollOptions.some(({ dateId }) => dateId === theDate);


document.getElementById("demo").innerHTML = doesDateExist;
<div id="demo"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...