Невозможно сравнить строки в Javascript - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь сравнить строку с набором строк, хранящихся в массиве. Вот блок кода:

then(op => {
        if (op[0].probability > FILTER_THRESHOLD) {
          if (FILTER_LIST.indexOf(op[0].className) > 1) {
            console.log("EUREKA! EUREKA! EUREKA!")

            console.log(op[0].className)
            return true;
          }
        }
        return false;
      })

Второй оператор if в некоторых случаях должен иметь значение true, но это не так. Возврат всегда ложный.

op[0].className должно быть строкой, и я также могу правильно получить значение из op[0].probability.

В чем может быть причина?

Я пробовал отладку и не могу понять, почему оператор if не соответствует действительности.

Вот массив FILTER_LIST:

var FILTER_LIST = ["Hello", "Please", "Simple"];

Пожалуйста посоветуйте, как это исправить!

Спасибо!

1 Ответ

2 голосов
/ 09 июля 2020

indexOf(...) > 1 спрашивает: «Было ли найдено совпадение в третьем элементе или позже?» Вы получите false, если он соответствует индексу 0 или 1. Если вы хотите просто «он где-то нашел», вам нужно !== -1, >= 0 или использовать includes вместо indexOf.

if (FILTER_LIST.indexOf(op[0].className) !== -1) {
// or
if (FILTER_LIST.indexOf(op[0].className) >= 0) {
// or
if (FILTER_LIST.includes(op[0].className)) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...