Как отфильтровать все слова с буквой е в массив? - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь поместить все слова с буквой e в отдельный массив, но не могу понять, как ввести переменную в регулярное выражение.

Я уже пытался вставить переменную вметасимвол регулярного выражения.

var inputletter = "e"

startlist = ["jambee", "dangen", "oragna", "sabotta"];
filter1 = [];
var regex = new RegExp(startlist, "g");

for (var i = 0; i < startlist.length; i++) {
  if(regex.test(regex, "regex") == true) {
    filter1.push(startlist[i])

  }

};
   console.log(filter1);

Ответы [ 4 ]

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

Если вы хотите сохранить существующий код, вам просто нужно проверить букву (регулярное выражение, состоящее только из этой буквы) для каждого элемента в массиве (startlist[i]).

const startlist = ['jambee', 'dangen', 'oragna', 'sabotta'];
const filter1 = [];
const regex = /e/;

for (var i = 0; i < startlist.length; i++) {
  const word = startlist[i];
  if (regex.test(word)) filter1.push(word);
};

console.log(filter1);

В качестве альтернативы вы можете использовать несколько более функциональный метод, используя метод массива filter и строку includesметод

const startlist = ["jambee", "dangen", "oragna", "sabotta"];

const filtered = startlist.filter(word => {
  return word.includes('e');
});

console.log(filtered);
0 голосов
/ 08 февраля 2019

вы используете тест неправильно:

let regex = new RegExp("e");

...

if(regex.test(startlist[i])) {...
0 голосов
/ 08 февраля 2019

Если вы не возражаете отойти от использования регулярных выражений, вы можете использовать Javascript array.prototype.filter () , string.prototype.toLowerCase () и string.prototype.includes () методы для создания массива, в котором каждый элемент имеет хотя бы одну 'e'

let startlist = ["jambee", "dangen", "oragna", "sabotta"];
let result = startlist.filter((element) => element.toLowerCase().includes('e'));
console.log(result);
0 голосов
/ 08 февраля 2019

Вы можете использовать функцию фильтра массива, а также использовать includes, чтобы проверить, содержит ли слово символ

var inputletter = "e"

startlist = ["jambee", "dangen", "oragna", "sabotta"];

function filter1(arr, char) {
  return arr.filter(function(item) {
    return item.includes(char)
  })


}
console.log(filter1(startlist, inputletter));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...