JavaScript массивы не являются ассоциативными массивами, возможно только значение индекса числовое, начиная с 0 и заканчивающийся на array.length - 1
. То, что вы, возможно, видели в примерах раньше или использовалось на другом языке раньше, было объектом JavaScript, который фактически ведет себя как ассоциативный массив. Вы можете получить доступ к значениям объектов на object['key']
или object.key
. Первый используется только при доступе к ключу с использованием переменной или ключа, который включает в себя недопустимые символы, то есть some-key
, в противном случае рекомендуется использовать точечный доступ, как показано во втором примере.
Поэтому ваша переменная mycookies
должна быть объектом, а не массивом.
Если вы изменили свою линию var mycookies = [];
на var mycookies = {};
, то есть измените ее из пустого массива на пустой объект, оставшийся код должен работать так, как вы ожидали.
Ниже приведен пример фрагмент кода для фиксированного кода, я добавил макет печенье строку, поэтому он может надежно работать:
var mockCookies = "a=1;b=2;c=3";
function getcookie(cookiename){
var mycookies = {}; // The cookie jar
var temp = mockCookies.split(";");
var key = "";
var val = "";
for(i=0;i<temp.length;i++){
key = temp[i].split("=")[0];
val = temp[i].split("=")[1];
mycookies[key] = val;
}
return mycookies[cookiename];
}
function printCookie(name) {
alert(getcookie(name));
}
<button onclick="printCookie('a')">Get a</button>
<button onclick="printCookie('b')">Get b</button>
<button onclick="printCookie('c')">Get c</button>
серверы могут посылать куки ('Set-Cookie' заголовка) с односимвольный делиметр ";" 'doument.cookie' возвращает строку с двумя разделителями символов"; " – befzz