javascript - 使用正则表达式的 Javascript 数组排序
问题描述
我想对一组电话号码进行排序,并根据区号输出数组的长度。例如:
var nums = [
8881756223,
8881742341,
9187221757,
...,
]
还有比这更多的条目(大约 1300 个),并且已经按数字顺序排列。但是,我想要它做的是:
1. look at the first 3 numbers of the first entry
2. look at the next entries first 3 numbers
3. if they are different, then splice the array, console.log new array.length
and console.log that area code
例如,我提供的数组中的前两个数字将被拼接到他们的新数组中,控制台输出将是:
areacode: 888, length: 1
areacode: 918, length: 0
我知道正则表达式来搜索第一个数字,但我不完全知道如何将它们拼接到自己的数组中......就像我知道的那样,使用拼接,但是将两者与逻辑语句进行比较,我从来没有在使用正则表达式之前做类似的事情。
我到目前为止是这样的:
const patt = new RegExp('^\d{3}')
var newArr = nums.filter(x => patt)
for (var i = 0; i < newArr.length; i++)
console.log(newArr[i])
但这是吐出完整的数字,而不是区号本身。当然,在我得到它只是吐出区号之后,我会添加逻辑进行排序。
解决方案
我建议使用
nums.map(x => ("" + x).replace(/^(\d{3})[^]*/, '$1'))
这里,
"" + x
将强制数字字符串.replace(/^(\d{3})[^]*/, '$1')
将删除保留前 3 位数字的所有字符(或不匹配时的整个字符串)。
JS 演示:
var nums = [
8881756223,
8881742341,
9187221757,
1
];
var res = nums.map(x => ("" + x).replace(/^(\d{3})[^]*/, '$1'));
console.log(res);
推荐阅读
- azure - Azure Log Analytics 未收集日志
- python - Django:具有通用视图的 reverse_lazy()
- android - 安卓短信验证API
- c# - 在 C# 中屏蔽字节数组
- r - 使用 R CMD 检查时避免检查“\notrun”示例
- c - 为什么我的 C http 请求会导致非法指令:4
- matplotlib - 多个子图右侧的唯一颜色条
- reactjs - react-testing-library - 无效的钩子调用
- android - Android Studio 3.6.1,布局设计视图未显示
- xpages - 如何使用 ODA(OpenNTF Domino API)制作 REST API?