有没有一种方法可以使用正则表达式来检查数组中的每个数字是否只包含一次出现的次数? myArr = [1, 2, 3, 4, 5, 6, 7, 8, 9] 我试过这个: let regex = /[1-9]{1}/; 但这仅检查数组是否包含以下范围内的至少一个事件:)
myArr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
let regex = /[1-9]{1}/;
gcuhipw91#
所描述的验证对于正则表达式来说不是一个特别好的用例。找到您寻求的答案的另一种方法是:使用数组项创建一个集合(默认情况下,集合仅保留唯一值。)将集合转换回数组。比较原始数组和新数组的长度。如果它们不匹配,则差异是重复存在的数组项的数量。
// return TRUE if myArr only has unique values [...new Set(myArr)].length === myArr.length
9rnv2umw2#
您可以只筛选重复项,然后将原始数组与筛选的数组进行比较,以查看是否有重复项。这样做的好处是,如果需要,可以使用过滤后的数组
let myArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 5] let uniques = myArr.filter((v, i, a) => a.indexOf(v) === i) let hasDupes = myArr.length != uniques.length console.log("hasdupes?", hasDupes); console.log(uniques)
2条答案
按热度按时间gcuhipw91#
所描述的验证对于正则表达式来说不是一个特别好的用例。
找到您寻求的答案的另一种方法是:
使用数组项创建一个集合(默认情况下,集合仅保留唯一值。)
将集合转换回数组。
比较原始数组和新数组的长度。如果它们不匹配,则差异是重复存在的数组项的数量。
9rnv2umw2#
您可以只筛选重复项,然后将原始数组与筛选的数组进行比较,以查看是否有重复项。这样做的好处是,如果需要,可以使用过滤后的数组