Убедитесь, что строка в скрипте массива проблемы - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь проверить, находится ли строка в массиве с помощью JavaScript. Я искал вокруг и нашел код ниже (в нем тоже есть некоторые изменения). Я настроил его так, чтобы он предупреждал, когда он добивается успеха и терпит неудачу. Когда это удается, каждый раз, когда он запускается после этого, он застревает на успехе, пока страница не обновится. Если это не удается, происходит то же самое. Что может заставить его начинать все заново при каждом запуске?

function urlVerify(a, b) {
    for (var j=0; j<a.length; j++) {
        if (a[j].match (b)) {
            ...
            alert('found');
            return j;
        }
    } 
    ...
    alert('notfound');
    return -1;
}

Код, содержащий массив и вызывающий функцию, выглядит следующим образом:

$(document).ready(function() {

    var urlPlain = window.location.hash.replace(/[#/]+/g, "");

    var pageIndex = [
        'home',
        'contact'
    ]       

    urlVerify(pageIndex, urlPlain);

});

Обычный URL сайта будет выглядеть следующим образом: www.example.com/#/home

Тогда переменная urlPlain упрощает его до: home

1 Ответ

1 голос
/ 30 марта 2012

Чтобы удалить все до "# /" вам нужно:

var lastBit = url.replace(/.*#\//, '')

Выше все вернется после последнего "# /". Но если вам нужен последний бит, зачем включать хеш?

Чтобы увидеть, находится ли слово в массиве, в зависимости от строки, вы можете использовать:

var hasLastBit = wordArray.join().match(lastBit);

или более точная версия:

var re = new RegExp('(^|\s)' + lastBit + '(\s|$)');
var hasLastBit = re.test(wordArray.join(' '));
...