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

why am I getting "object Object" when I call .toString on a JS array?

本文关键字:对象 对象对象 toString 调用 JS 数组 为什么      更新时间:2023-09-26

我正在尝试使用以下内容查看给定文档中的所有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])]);