为什么我在 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])]);
我正在尝试查看给定文档中的所有 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])]);