[英]why am I getting “object Object” when I call .toString on a JS array?
I'm trying to look at all the cookies in a given document with this: 我试图以此查看给定文档中的所有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());
However, what i'm seeing in the alert box is 但是,我在警报框中看到的是
[object Object]
I was expecting a comma separated list of values. 我期待以逗号分隔的值列表。 What am I doing wrong?
我究竟做错了什么?
The value being returned is not an array. 返回的值不是数组。 It's a plain object.
这是一个普通的对象。 Presumably you do want to use an object here, so that you can use string-valued keys.
大概您确实想在此处使用一个对象,以便可以使用字符串值的键。 You can print out its contents like so:
您可以像这样打印其内容:
var cookies = get_cookies_array();
console.log(JSON.stringify(cookies));
Or line by line: 或逐行:
Object.keys(cookies).forEach(function (key) {
console.log(key, ' - ', cookies[key]);
});
Replace var cookies = {};
替换
var cookies = {};
with var cookies = [];
使用
var cookies = [];
so that you are dealing with an Array instead of an Object. 这样就可以处理数组而不是对象。
Then, because you are using an associative array, also change your writing into array like this: 然后,因为您使用的是关联数组,所以还可以将您的文字更改为数组,如下所示:
cookies.push([decodeURIComponent(name_value[0]), decodeURIComponent(name_value[1])]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.