не работает функция JS

242
22 марта 2018, 10:36

Нужно чтобы функция возвращала false если в password найдено одно из значений linesArray, чтобы цикл проверял каждое значение массива, но почему что не работает, не пойму почему.

var linesArray = ["abcd","efg", "hrh"]; 
var password = "213efg123" 
var resultat = true; 
var testValidity = function(){ 
    for (i = 0;resultat = true; i++) { 
  let arr = linesArray[i]; 
  let str = password; 
  let test = str.indexOf(arr.toString()); 
      if (test > -1) { 
        resultat = false 
      } 
      return resultat; 
    } 
};

Answer 1

Ещё один фидл

var LinesArray = ["abcd","efg", "hrh"], 
	password = "213efg123", 
	testValidity = function(){ 
		var resultat = true; 
		for (var i = 0; i < LinesArray.length; i++) { 
			var reg = new RegExp(LinesArray[i]); 
			if(reg.test(password)){ 
				resultat = false; 
				break; 
			} 
      } 
      return resultat; 
    }; 
console.log(testValidity());

Answer 2

Тут ошибка: var LinesArray["abcd","efg", "hrh"];, должно быть var LinesArray = ["abcd","efg", "hrh"];

И тут ошибка: let arr = linesArray[i] - вместо определенной ранее переменной "LinesArray" прописана неизвестная "linesArray". Javascript чувствителен к регистру.

Answer 3

У вас было три ошибки в коде, в первой строке

var LinesArray["abcd","efg", "hrh"];

не было знака равно.

А в функции вы использовали обращение к массиву linesArray[i], тогда как у вас переменная называлась LinesArray (с большой буквы).

А также у вас получается return вызывался при первой итерации цикла, в результате цикл прерывался и вы не доходили до следующих значений. Проще всего вынести return за пределы цикла for.

И, по-моему, лучше ограничить цикл for длинной массива linesArray.

var linesArray = ["abcd", "efg", "hrh"]; 
var password = "213efg123" 
var resultat = true; 
var testValidity = function() { 
  for (let i = 0; i < linesArray.length; i++) { 
    let arr = linesArray[i]; 
    let str = password; 
    let test = str.indexOf(arr.toString()); 
    if (test > -1) { 
      resultat = false 
      break; 
    } 
  } 
  return resultat; //перенос return 
}; 
 
console.log(testValidity());

Answer 4

var linesArray = ["abcd", "efg", "hrh"]; 
var password = "213efg123" 
var testValidity = function(pwd, lines) { 
  return !lines.some(line => pwd.indexOf(line) > -1); 
} 
 
console.log(testValidity(password, linesArray));

READ ALSO
В чем смысл условия во второй строке?

В чем смысл условия во второй строке?

По условию нужно создать функцию addClass(obj, cls), которая добавляет в список класс cls, но только если его там еще нет и она не должна добавлять лишних...

201
Слишком большой размер файла nw js

Слишком большой размер файла nw js

Вот пишу первое приложение на nwjs

234
Как получить данные из массива js? [дубликат]

Как получить данные из массива js? [дубликат]

На данный вопрос уже ответили:

169
Почему не выполняется условие if else в javascript?

Почему не выполняется условие if else в javascript?

Добрый деньЯ только разбираюсь с JavaScript, пробую написать простой скрип с условиями

175