Is it possible, I have a some sort of list and I want to store it on browser, if it is not possible, what is the efficient way of doing this?
-
see this example I created [stackoverflow](https://stackoverflow.com/questions/4470477/create-array-in-cookie-with-javascript/62686800#62686800) – AllanRibas Jul 01 '20 at 23:39
4 Answers
JSON encode it, effectively producing a string like "{name:'myname',age:'myage'}"
which you put in a cookie, retrieve when needed and decode back into a JavaScript array/object.
Example - store array in a cookie:
var arr = ['foo', 'bar', 'baz'];
var json_str = JSON.stringify(arr);
createCookie('mycookie', json_str);
Later on, to retrieve the cookie's contents as an array:
var json_str = getCookie('mycookie');
var arr = JSON.parse(json_str);
Note: cookie functions are not native, taken from How do I create and read a value from cookie?

- 5,913
- 8
- 46
- 50
One quick method is to join()
your array into a single string, using an appropriate delimiter:
var a = [1, 2, 3, 4];
a.join('|'); // Returns: "1|2|3|4"
Then simply use the string split()
method to get the array back from the cookie string.

- 337,827
- 72
- 505
- 443
-
2A minor correction, it needs to be assigned as new variable like this, `var new_a = a.join('|')` which will return "1|2|3|4". – Shihan Khan Dec 27 '18 at 05:39
For each value id in an array, please try below method to save a value in a cookie array:
<script type="text/javascript">
/**
* set cookie
*/
function set_cookie(cookiename, cookievalue, hours) {
var date = new Date();
date.setTime(date.getTime() + Number(hours) * 3600 * 1000);
document.cookie = cookiename + "=" + cookievalue + "; path=/;expires = " + date.toGMTString();
}
set_cookie('item['+id+']', id, 24*365*10); // 10 years
</script>
And you can retrieve this array in php:
<?php
foreach($_COOKIE['item'] as $e){
echo $e,'<br />';
}
?>

- 31
- 1
Assume cart is array we can set it with
document.cookie = 'cart='+ JSON.stringify(cart)
Then, you have to create a function to read cookie
function getCookie(cookieName) {
var name = cookieName + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if ((c.indexOf(name)) == 0) {
return c.substr(name.length);
}
}
}
then you can get cookie with
cart = JSON.parse(getCookie('cart'))

- 307
- 3
- 9