Почему мои результаты отличаются при использовании литеральной строки и локальной переменной - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть следующий цикл.

for (var key in criteria) {

    var exists = Object.keys(item).some(function(k) {
        return item[k] === "Test";
    })
}

Это прекрасно работает.И я получаю 15 trues в зависимости от количества предметов.Однако, если я изменю его на следующее:

for (var key in criteria) {

    var myString = item[key];

    var exists = Object.keys(item).some(function(k) {
        return item[k] === myString;
    });
}

Если я знаю, что item[key] будет равно «Тест» в какой-то момент в моем цикле, это не даст тот же результат.Фактически он возвращает все trues,

Критерии - это объект, подобный следующему:

{
  habitat_type: "Mangroves", 
  issue_specific_terms: "Test"
}

Элемент также является объектом, подобным:

{
  habitat_type: "Streams and rivers", 
  cci: "Low productivity/loss of agriculture", 
  intervention_type: "Restoration", 
  issue_specific_terms: "Test", 
  country: "United States of America"
}

1 Ответ

0 голосов
/ 27 февраля 2019

Вам нужно изменить значение myString - в настоящее время оно всегда будет равным, потому что criteria в настоящее время не входит в него.Измените myString на criteria[key]:

for (var key in criteria) {

    var myString = criteria[key];

    var exists = Object.keys(item).some(k => item[k] === myString);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...