此图片有助于解释我的问题。
这是以下代码中控制台日志的结果。第一个控制台日志打印出一个键值对数组作为epxected。第二个控制台日志按预期打印出值,但也打印出一大堆函数。这似乎实际上在变量的值内,并且不可用。
我希望在没有这种噪音的情况下遍历键值数组。我以前从来没有见过这个。不幸的是,我不确定该尝试解决这个问题,非常抱歉。
这是代码,函数从注释中链接的堆栈溢出答案中轻微改变。
// http://stackoverflow.com/a/4656873/3774582
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
if (hash[1]) {
vars[hash[0]] = hash[1];
}
}
return vars;
}
var url_parameters = getUrlVars();
console.log(url_parameters);
for (var key in url_parameters) {
var current_value = url_parameters[key];
console.log(current_value);
}
答案 0 :(得分:1)
你有一些库正在为对象的原型添加属性。这些仍然是可迭代的,但是在console.log()
对象时不显示,因为它只显示对象自己的属性。
如果url_parameters.hasOwnProperty(key)
。
此外,正如Pamblam指出的那样,当你制作一个物体时,你正在定义一个数组。
答案 1 :(得分:1)
var vars = []应为var vars = {}
对象基本上是带有javascript函数的关联数组。