Сохранить длинную строку в множественном массиве - PullRequest
0 голосов
/ 08 марта 2010

У меня есть длинные строковые массивы, которые выглядят так

   var callinfo_data=new Array(
"1300 135 604#<b>Monday - Friday: 9:00 a.m. to 5:30 p.m. AEST</b>", //Australia
..
"0844000040#<b>lunedì-venerdì ore 10:00 - 17:00 CET</b>", //Switzerland (it)
"212 356 9707#<b>Hafta içi her gün: 10:00 - 18:00</b>", //Turkey
"08451610009#<b>Monday - Friday: 9:00 a.m. to 6:30 p.m. GMT</b>", //UK
"866 486 6866#<b>Monday - Friday: 7:00 a.m. to 11:00 p.m. EST</b><br />Saturday: 9:00 a.m. to 8:00 p.m. EST", //USA
"+31208501004#<b>Monday - Friday: 9:00 a.m. to 7:30 p.m. GMT+1</b>", //other countries
" # ");

Как видите, это контактный телефон и время открытия. Я могу использовать разделение, чтобы разделить их на Информация о = callinfo_data [п] .split ( "#"); две секции, И тогда я могу представить их в HTML, как

"<div id ='phoneNumber'>"+info[0]+"</div><div id='openTime'>"+info[1]+"</div>"

Но моя функция отображения номера телефона будет считывать переменные cookie, а затем выбирать правильную контактную информацию для отображения.

Как,

     phone=callinfo_data[2].split("#");
if (locale == 'UK')         details = phone[0]+ build_dropdown(locale);
    else if (locale == 'fr')    details = 'French Contact Details<br>'+build_dropdown(locale);
    else if (locale == 'be')    details = 'Belgian Contact Details<br>'+ build_dropdown(locale);
    else details = 'Unknown Contact Detail';
    writeContactInfo(details);

Мои вопросы: как я могу создать функцию для загрузки номера телефона и времени, основываясь на моих переменных cookie, в Великобритании?

Я могу жестко закодировать все, но я думаю, что это слишком глупо.

Я должен написать длинный код вроде:

phone1= allinfo_data[0].split("#");

phone1= allinfo_data[1].split("#");
...

и т.д.

Вторые вопросы, как я могу загрузить эти длинные массивы в мульти-массивы с легким доступом?

Спасибо

С уважением, Цин

1 Ответ

0 голосов
/ 09 марта 2010

Вместо использования строк и их разбиения, почему бы вам не использовать объектные литералы для хранения ваших данных?

Вот так ...

{
    "phone" : "111-111-1111",
    "hours" : "Monday - Friday: 9:00 a.m. to 7:30 p.m. GMT+1"
}

Вы можете поместить эти объекты в массив:

var locales = {
    "UK" : {
   "details": "UK Contact Info",
    "phone" : "111-111-1111",
    "hours" : "Monday - Friday: 9:00 a.m. to 7:30 p.m. GMT+1"
},
    "DE": {
   "details": "DE Contact Info",
    "phone" : "111-111-1111",
    "hours" : "Monday - Friday: 9:00 a.m. to 7:30 p.m. GMT+1"
}};

Затем вы можете получить к ним доступ следующим образом:

locales["UK"]["phone"];

function buildTimeInfo(){
    var newDiv = document.createElement("div");
    var html = "<h2>" + locales[locationFromCookie]["details"] + "</h2>";
    html += "<h3>" + locales[locationFromCookie]["hours"] + "</h3>";
    html += "<p>" + locales[locationFromCookie]["phone"] + "</p>";
    newDiv.innerHTML = html;
    document.body.appendChild(newDiv);
};
...