javascript - coldfusion - работа со списком - PullRequest
0 голосов
/ 06 сентября 2011

Это, наверное, легко для кого-то.

Я возвращаю список идентификаторов кампании (12,45,66) через JSON в переменную javascript

var campaignList = res.DATA.CAMPAIGNS

Теперь, учитывая указанный идентификатор кампании, переданный в URL

var campaignId ='<cfoutput>#url.campaignID#</cfoutput>'

Я хочу проверить, содержит ли возвращенный список этот идентификатор кампании

Любая помощь высоко ценится.

Ответы [ 4 ]

3 голосов
/ 06 сентября 2011

Множество способов сделать это, но мне нравятся красивые структуры данных, так что ...

Разделите список на запятую, затем переберите список, ища значение:

function campaignExists(campaignList,campaignId) {
    aCampaignList = campaignList.split(',');
    for (i=0;i<aCampaignList.length;i++) {
        if (aCampaignList[i]==campaignId)
            return true;
    }
    return false;
}
0 голосов
/ 09 сентября 2011

Мне не нравится ответ Билли на это, переменные внутри функции объявлены в глобальной области видимости, и это несколько сложнее.Если у вас есть список идентификаторов в виде строки в вашем js, просто найдите идентификатор, который вы получили из пользовательского ввода.

</p> <pre><code>var patt = new RegExp("(^|,)" + campaignId + "(,|$)"); var foundCampaign = campaignList.search(patt) != -1;

0 голосов
/ 06 сентября 2011

Вот немного нестандартного решения. Вы можете создать структуру для идентификаторов своих свойств, которые вы передаете в поисковик json, и ключ и значение совпадают. Затем вы можете проверить структуру для hasOwnProperty. Например:

var campaignIDs = {12 : 12, 45 : 45, 66 : 66};

campaignIDs.hasOwnProperty("12"); //true
campaignIDs.hasOwnProperty("32"); //false

Таким образом, если список довольно длинный, вам не придется перебирать все потенциальные свойства, чтобы найти совпадение. Вот скрипка, чтобы увидеть это в действии:

http://jsfiddle.net/bittersweetryan/NeLfk/

0 голосов
/ 06 сентября 2011

Поскольку Array.indexOf, к сожалению, не является кросс-браузерным, вы смотрите на что-то вроде:

// assume there is no match
var match_found = false;

// iterate over the campaign list looking for a match,
// set "match_found" to true if we find one
for (var i = 0; i < campaignList.length; i += 1) {
    if (parseInt(campaignList[i]) === parseInt(campaignId)) {
        match_found = true;
        break;
    }
}

Если вам нужно сделать это несколько раз, оберните его в функцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...