为什么我得到"对象"当我在JS数组上调用.toString时?

时间:2015-03-06 18:28:20

标签: javascript cookies

我试图用以下方法查看给定文档中的所有Cookie:

function get_cookies_array() {
    var cookies = {};

    if (document.cookie && document.cookie != '') {
        var split = document.cookie.split(';');

        for (var i = 0; i < split.length; i++) {
            var name_value = split[i].split("=");
            name_value[0] = name_value[0].replace(/^ /, '');
            cookies[decodeURIComponent(name_value[0])] = decodeURIComponent(name_value[1]);
        }
    }

    return cookies;
}

var cookies = get_cookies_array();

alert(cookies.toString());

但是,我在警告框中看到的是

[object Object]

我期待以逗号分隔的值列表。我做错了什么?

2 个答案:

答案 0 :(得分:2)

返回的值不是数组。这是一个普通的对象。大概你想在这里使用一个对象,这样你就可以使用字符串值键。您可以打印出如下内容:

var cookies = get_cookies_array();

console.log(JSON.stringify(cookies));

或逐行:

Object.keys(cookies).forEach(function (key) {
    console.log(key, ' - ', cookies[key]);
});

答案 1 :(得分:2)

var cookies = {};替换为var cookies = [];,以便处理数组而不是对象。

然后,因为您正在使用关联数组,所以也将您的写入更改为数组:

cookies.push([decodeURIComponent(name_value[0]), decodeURIComponent(name_value[1])]);