JavaScript проверить, содержится ли буква в строке - PullRequest
3 голосов
/ 04 августа 2020

У меня есть следующая функция JavaScript, с помощью которой я хочу проверить, содержит ли первый элемент массива с именем mutation все буквы второго элемента.

function mutation(arr) {
  let test    = arr[1].toLowerCase();
  let target  = arr[0].toLowerCase();

  let split = test.split('');

  split.forEach((elem)=>{
    if(target.indexOf(elem) < 0 ) {
      return false;
    }
  });
  return true;
}

mutation(["hello", "hey"]);

Теперь он должен показать мне логическое false, потому что буквы y не существует в hello word. но это не так.

Я что-то делаю не так?

Ответы [ 5 ]

3 голосов
/ 04 августа 2020

Вы можете использовать Array.prototype.every ()

function mutation(arr) {
  let test = arr[1].toLowerCase();
  let target = arr[0].toLowerCase();
  let split = test.split('');
  return split.every(x => target.includes(x)); // checks if all letters of `split` exists in `target`
}
console.log(mutation(["hello", "hey"]));
console.log(mutation(["hello", "heo"]));
console.log(mutation(["helloworld", "lloword"]));
1 голос
/ 04 августа 2020

Я бы сделал:

function mutation(arr) {
  let test    = arr[1].toLowerCase();
  let target  = arr[0].toLowerCase();
  return target.includes(test);
}

console.log(mutation(["hello", "hey"]));
console.log(mutation(["helloworld", "hello"]));
1 голос
/ 04 августа 2020

Вы можете попробовать другой подход, чтобы получить ожидаемые результаты:

function mutation(arr) {
  let test    = arr[1].toLowerCase().split('').join('');
  let target  = arr[0].toLowerCase().split('').join('');
  return target.includes(test);
}

mutation(["hello", "hey"]);
0 голосов
/ 04 августа 2020

Придерживайтесь более классических методов:

console.log(mutation(["hello", "hey"]));

function mutation(args) {
  const target  = args[0].toLowerCase();
  const test    = args[1].toLowerCase();
  
  for(let i = 0; i < test.length; i += 1) {
  
    if (target.indexOf(test[i]) < 0) {
      return false;
    }
    
  }
  return true;
}
0 голосов
/ 04 августа 2020

Оператор Return внутри ForEach не будет возвращаться из функции, вы можете использовать простое для l oop или сокращение, чтобы получить конечный результат в строке

function mutation(arr) {
  let test    = arr[1].toLowerCase();
  let target  = arr[0].toLowerCase();

  let split = test.split('');

  const result = split.reduce((acc, curr) => acc && target.includes(curr), true);

  return result;
}

console.log(mutation(['hello', 'y']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...