繁体   English   中英

为什么在JS数组上调用.toString时会出现“ object Object”?

[英]why am I getting “object Object” when I call .toString on a JS array?

我试图以此查看给定文档中的所有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]

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

返回的值不是数组。 这是一个普通的对象。 大概您确实想在此处使用一个对象,以便可以使用字符串值的键。 您可以像这样打印其内容:

var cookies = get_cookies_array();

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

或逐行:

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

替换var cookies = {}; 使用var cookies = []; 这样就可以处理数组而不是对象。

然后,因为您使用的是关联数组,所以还可以将您的文字更改为数组,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM