В дополнение к тому, что сказанный izb, HashMap
позволяет нулевым значениям, тогда как эти Hashtable
не делает.
Также примечание, которое Hashtable
расширяется Dictionary
класс, который как состояние Javadocs, является устаревшим и было заменено эти Map
интерфейс.
Как вы можете прочитать в этой теме :
Вы комбинируете использование плагина jQuery.cookie и JSON и решаете свою проблему.
Когда вы хотите сохранить массив, вы создаете массив в JS и используете JSON.stringify
, чтобы преобразовать его в строку и сохранить с $.cookie('name', 'array_string')
var myAry = [1, 2, 3];
$.cookie('name', JSON.stringify(myAry));
Когда вы хотите Извлеките массив из cookie, вы используете $.cookie('name')
для получения значения cookie и JSON.parse
для извлечения массива из строки.
var storedAry = JSON.parse($.cookie('name'));
//storedAry -> [1, 2, 3]
Печенье может содержать только строки. Если вы хотите смоделировать массив, вам нужно его сериализовать и десериализовать.
Вы можете сделать это с помощью библиотеки JSON .
Создать массив в cookie, используя jQUery?
var list = new cookieList("test"); $(img).one('click', function(i){ while($('.selected').length < 3) {
$(this).parent()
.addClass("selected")
.append(setup.config.overlay);
//$.cookie(setup.config.COOKIE_NAME, d, setup.config.OPTS);
var index = $(this).parent().index();
// suppose this array go into cookies.. but failed
list.add( index );
var count = 'You have selected : <span>' + $('.selected').length + '</span> deals';
if( $('.total').length ){
$('.total').html(count);
}
} });
Для этого примера вы можете сделать это довольно легко:
Сделать Cookies:
///W3Schools Cookie Code:
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
///My Own Code:
for(a=0;a<b.length;a++){
setCookie(b[a],b[a],periodoftime);
}
Получить массив:
for(a=0;a<b.length;a++){
b[a] = getCookie(b[a])
}
Для любого массива с другими типами значений, кроме строк:
Make Cookies:
///Replace MyCode above With:
if(typeof b[a] === 'string'){
setCookie(b[a],b[a],periodoftime);
}else{
setCookie(b[a].toString,b[a],periodoftime);
}
Получить массив:
for(a=0;a<b.length;a++){
if(typeof b[a] === 'string'){
b[a] = getCookie(b[a])
}else{
b[a] = getCookie(b[a].toString)
}
}
Единственный недостаток в том, что идентичные значения не могут быть получены.
JQuery не требуется, разделение запятыми или JSON.
Я согласен с другими комментариями - вы не должны делать это, и вы должны использовать JSON. Однако, чтобы ответить на ваш вопрос, вы можете взломать его, сохранив массив в виде строки с разделителями-запятыми. Допустим, вы хотите сохранить следующий массив Javascript в cookie:
var a = ['peter','esther','john'];
Вы можете определить строку cookie, а затем выполнить итерацию по массиву:
// Create a timestamp in the future for the cookie so it is valid
var nowPreserve = new Date();
var oneYear = 365*24*60*60*1000; // one year in milliseconds
var thenPreserve = nowPreserve.getTime() + oneYear;
nowPreserve.setTime(thenPreserve);
var expireTime = nowPreserve.toUTCString();
// Define the cookie id and default string
var cookieId = 'arrayCookie';
var cookieStr = '';
// Loop over the array
for(var i=0;i<a.length;i++) {
cookieStr += a[i]+',';
}
// Remove the last comma from the final string
cookieStr = cookieStr.substr(0,cookieStr.length-1);
// Now add the cookie
document.cookie = cookieId+'='+cookieStr+';expires='+expireTime+';domain='+document.domain;
В этом примере вы бы сохранили следующий файл cookie (если ваш домен www.example.com):
arrayCookie=peter,ester,john;expires=1365094617464;domain=www.example.com