我有一个Javascript数组var array = ["1-2", "3-6", "4", "1-6", "4"],并希望删除包含变量var m = "6"的所有元素,即"3-6“和"1-6”。
我found这一行代码var newarray = array.filter(a => a !== "4"),它创建一个不包含两个"4“元素的新数组。但是,我还没有找到如何使用正则表达式来删除包含给定变量m = "6"的所有元素。
我想过一些类似var newarray = array.filter(a => a !== /eval("return m")/)的东西,但这是行不通的。
我非常感谢你的帮助,并为我的英语道歉:)
发布于 2022-09-10 20:13:35
string.includes()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
const array = ["1-2", "3-6", "4", "1-6", "4"];
const newarray = array.filter(a => !a.includes("6"))
console.log(newarray);
regex替代
如果您需要复杂的模式检查,则需要使用正则表达式。
const array = ["1-2", "3-6", "4", "1-6", "4"];
const newarray = array.filter(a => !a.match(/6/gi))
console.log(newarray);
,例如,同时检查大写和小写,或只使用
[abcde]或某些数字[678]等的多个字母。
如果没有嵌套的includes()或带if/else的逻辑。
为了学习regex,您可以使用这个https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/#regular-expressions
另一项信息:
使用regex的
,我建议在最后添加
g,以防万一/6/g
g的意思是全局的(但在这种情况下并不重要,因为如果至少有6次)。这段代码运行良好(如果您关心多个6,然后使用g),如果要选择文本,也可以使用i。
事实上,没有i:"A“和"a”并不相同
因此,对于i,您不必担心大写或小写
您可以像这样做/6/gi来使用这两种方法
https://stackoverflow.com/questions/73674869
复制相似问题