如何将所有带有字母e的单词过滤到数组中?

时间:2019-02-08 03:18:28

标签: javascript arrays regex

我试图将所有带有字母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 :(得分:0)

您可以使用数组过滤器功能,也可以使用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));

答案 1 :(得分:0)

您使用的测试错误:

let regex = new RegExp("e");

...

if(regex.test(startlist[i])) {...

答案 2 :(得分:0)

如果您不介意不使用正则表达式,则可以使用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);

答案 3 :(得分:0)

如果要保留现有代码,只需要针对数组(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);