JavaScript数组过滤实现:移除符号或数字(密码生成器场景)
密码生成器数组的两种过滤实现
原字符数组
const characters = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "w", "x", "y", "z", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "#", "$", "%", "^", "&", "*", ",", "|", ":", ";", "<", ">", ".", "?", "/" ];
需求1:过滤所有符号,仅保留字母与数字
利用数组filter方法,结合类型判断和正则表达式区分元素:
const lettersAndNumbers = characters.filter(item => { // 匹配字母(字符串类型且符合a-z/A-Z)或数字(number类型) return (typeof item === 'string' && /[a-zA-Z]/.test(item)) || typeof item === 'number'; });
说明:原数组中数字为number类型,字母和符号为string类型,通过typeof区分数字,再用正则筛选出字母,即可排除所有符号。
需求2:过滤所有数字,仅保留字母与符号
直接通过filter排除number类型元素:
const lettersAndSymbols = characters.filter(item => { // 移除所有number类型的元素,剩余即为字母和符号 return typeof item !== 'number'; });
说明:原数组里只有数字是number类型,因此直接过滤掉这类元素就能得到目标数组。
内容的提问来源于stack exchange,提问作者Saoud ElTelawy
相关产品推荐
相关产品推荐

