JS正则表达式与数组filter方法解析及学习资源咨询
两段JS代码解析:移除数组数字相关逻辑
一、正则表达式代码:str.replace(/#|_/g,'')
首先明确:这段代码不是用来移除数组中的数字的,它是处理字符串的工具,作用是把字符串里的#和_全部删掉。拆解每个部分:
str:你要处理的目标字符串变量名。.replace():字符串的内置方法,用来替换字符串里的指定内容,返回处理后的新字符串(不会修改原字符串)。/#|_/g:正则表达式规则:#|_:|表示“或”,意思是匹配#或者_这两个字符中的任意一个。g:全局修饰符,意思是匹配字符串里所有符合规则的字符(如果不加g,只会替换第一个匹配到的字符)。
'':替换后的内容是空字符串,也就是把匹配到的#或_直接删掉。
举个例子:如果str = "abc#def_ghi",执行这段代码后会得到"abcdefghi"。
二、数组过滤代码:let difference = arr1.filter(x => !arr2.includes(x))
这段代码才是和数组元素过滤相关的,作用是找出arr1里不在arr2中的所有元素,如果把arr2设为所有数字的集合,就能实现“移除arr1里的所有数字”的需求。拆解逻辑:
arr1.filter(...):filter是数组的内置迭代方法,会遍历arr1的每一个元素,把满足条件的元素收集起来,返回一个新数组(不会修改原数组)。x => !arr2.includes(x):这是箭头函数,作为filter的判断条件:x:是filter遍历arr1时的当前元素临时变量——每次循环会把arr1里的一个元素赋值给x,比如第一次循环x是arr1[0],第二次是arr1[1],以此类推,它只是个临时占位符,换成item或者element也一样能用,所以不用预设的数组名。arr2.includes(x):判断当前元素x是否存在于arr2中,存在返回true,不存在返回false。!:逻辑取反,把includes的结果反过来——如果x不在arr2里,!arr2.includes(x)就会返回true,这个元素就会被filter保留到新数组里。
举个实际例子:
const arr1 = ['apple', 5, 'banana', 9, 'orange']; const arr2 = [0,1,2,3,4,5,6,7,8,9]; // 所有数字的集合 let difference = arr1.filter(x => !arr2.includes(x)); // 执行后difference的值是 ['apple', 'banana', 'orange'],成功移除了数字
新手学习建议
- 优先看MDN的JavaScript官方文档,直接搜索“MDN String replace”“MDN Array filter”“MDN Array includes”,里面有详细的语法解释、参数说明和实用示例,都是最权威的内容。
- 学习数组方法时,重点掌握
filter、map、forEach这类迭代方法的核心逻辑——遍历数组元素并执行对应操作;学习正则时先搞懂基础匹配规则和修饰符(比如g全局、i忽略大小写)。
内容的提问来源于stack exchange,提问作者Valentín Sanabria
相关产品推荐
相关产品推荐

