如何在JavaScript中基于字符串片段对数组去重并提取指定URL部分?
解决方法:提取主页面URL并去重
嘿,这个需求很清晰呀,咱们分两步就能搞定:先把每个URL里的主页面部分提出来,再去重就好啦。直接上代码和详细解释:
实现代码
var array= [ 'http://www.example.com/page1/#comment-1234', 'http://www.example.com/page1/#comment-98733', 'http://www.example.com/page1/#comment-4298312', 'http://www.example.com/page2/#comment-2143' ]; // 1. 提取每个URL的主页面地址(去掉#及后面的锚点内容) const mainPageUrls = array.map(url => url.split('#')[0]); // 2. 利用Set去重,再转回数组 const uniqueMainPages = [...new Set(mainPageUrls)]; console.log(uniqueMainPages); // 输出结果: ['http://www.example.com/page1','http://www.example.com/page2']
关键步骤说明
- 提取主页面:用
split('#')[0]把每个URL按#分割成两部分,取第一个元素就是不带锚点的主页面地址——哪怕有些URL后面没有#,这个方法也能正常工作,兼容性拉满。 - 去重操作:JavaScript的
Set对象本身会自动过滤重复值,把提取后的数组放进Set里,再用扩展运算符...把Set转回数组,就能得到唯一的主页面列表了。这种方式比传统的filter+indexOf写法更简洁高效,数组越大优势越明显。
如果需要兼容不支持ES6语法的老旧浏览器,也可以用这种传统去重方式:
const uniqueMainPages = mainPageUrls.filter((url, index) => mainPageUrls.indexOf(url) === index);
内容的提问来源于stack exchange,提问作者spaceman
相关产品推荐
相关产品推荐

