String NodeJS for循环在修剪以数字结尾的URL时失败

String NodeJS for循环在修剪以数字结尾的URL时失败,string,node.js,facebook,for-loop,replace,String,Node.js,Facebook,For Loop,Replace,我试图获取一组Facebook页面URL,并仅提取页面的实体标题。Ie for“”我只查找“BalanceSpaBoca”。此脚本适用于我使用的大多数示例数据(testFBurls数组),只打印修剪过的字符串。但对于其他字符串,它同时打印修剪后的字符串和原始字符串。看起来所有打印两次的URL都以一串数字结尾,但我不确定为什么这会对程序的运行方式产生任何影响 var testFBurls = [ 'http://www.facebook.com/pages/A-Yoga-Way/36170

我试图获取一组Facebook页面URL,并仅提取页面的实体标题。Ie for“”我只查找“BalanceSpaBoca”。此脚本适用于我使用的大多数示例数据(testFBurls数组),只打印修剪过的字符串。但对于其他字符串,它同时打印修剪后的字符串和原始字符串。看起来所有打印两次的URL都以一串数字结尾,但我不确定为什么这会对程序的运行方式产生任何影响

var testFBurls = [
    'http://www.facebook.com/pages/A-Yoga-Way/361702000576231',
    'http://www.facebook.com/aztigurbansalon',
    'https://www.facebook.com/pages/Azzurri-Salon-Spa/542579982495983',
    'https://www.facebook.com/BalanceSpaBoca',
    'https://www.facebook.com/BocaAmericanNailsandSpa',
    'http://www.facebook.com/beachyogagirl',
    'https://www.facebook.com/pages/Beauty-of-Wax/156355679240',
    'http://www.facebook.com/beehivefitness.boca',
    'https://www.facebook.com/pages/Believe-Day-Spa-Boutique/197615685896',
    'https://www.facebook.com/photo.php?fbid=10151725966640897&set=a.10151725965355897.1073741828.197615685896&type=1&theater',
    'http://facebook.com/pages/bigfoot-spa/1486364798260300',
    'http://www.facebook.com/bloheartsyou',
    'http://www.facebook.com/pages/The-Wellness-Center-Of-Boca-Raton/170371382995576',
    'https://www.facebook.com/TherapyBodyBalanced',
    'https://www.facebook.com/pages/BodyVital-Massage/177664492277158',
    'https://www.facebook.com/bodyworkmall',
    'https://www.facebook.com/pages/The-Bombay-Room-Yoga-Studio/148731658497764',
    ];

var possibleFBurlStarts = [
    "https://www.facebook.com/", 
    "http://www.facebook.com/", 
    "https://www.facebook.com/pages/", 
    "http://www.facebook.com/pages/",
];


for (var count=0; count<testFBurls.length; count++){
    var currentURL = testFBurls[count];
    if (currentURL.indexOf(".com/photo") > -1) {
        testFBurls.splice(i, 1);
        i--;
    }
    for (var i=0; i < possibleFBurlStarts.length; i++){
        var indexOfSubstring = currentURL.indexOf(possibleFBurlStarts[i]);
        if (indexOfSubstring > -1) {
            var res = currentURL.replace(possibleFBurlStarts[i], "");
        }
    }
    if (count == testFBurls.length-1){
        console.log(testFBurls);
    }
}

请注意,第一个url列出了两次(第一次以其原始形式,第二次以其截断形式),但第二个url(输出中的第三行)仅以截断形式列出。你知道是什么导致了这种差异吗?只应打印截断的url。

您正在修改正在迭代的数组,而您正在迭代该数组:
testfbURL.splice(i,1)这通常不是一件好事情。在任何情况下,我认为使用一个简单的正则表达式应该可以更轻松地实现目标:

for (var count=0; count<testFBurls.length; count++){
    var matches = testFBurls[count].match(/^https?\:\/\/www\.facebook\.com\/(?:pages\/)?([^\/]+)/);
    if (matches) {
        console.log('found it:', matches[1]);
    }
}

for(var count=0;countThank!非常有效,而且显然简单得多。关于如何将这样的正则表达式组合在一起供将来使用,有很多建议吗?但一旦你开始了解基本知识,就需要进行大量的尝试和错误。我使用它来根据目标评估正则表达式,看看在代码中实现它之前得到了什么。
for (var count=0; count<testFBurls.length; count++){
    var matches = testFBurls[count].match(/^https?\:\/\/www\.facebook\.com\/(?:pages\/)?([^\/]+)/);
    if (matches) {
        console.log('found it:', matches[1]);
    }
}