字典循环上的console.log返回函数而不是值

时间:2016-02-29 20:26:15

标签: javascript console.log

此图片有助于解释我的问题。

console log

这是以下代码中控制台日志的结果。第一个控制台日志打印出一个键值对数组作为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);
}

2 个答案:

答案 0 :(得分:1)

你有一些库正在为对象的原型添加属性。这些仍然是可迭代的,但是在console.log()对象时不显示,因为它只显示对象自己的属性。

如果url_parameters.hasOwnProperty(key)

,您应该只在循环中运行日志

此外,正如Pamblam指出的那样,当你制作一个物体时,你正在定义一个数组。

答案 1 :(得分:1)

var vars = []应为var vars = {}

对象基本上是带有javascript函数的关联数组。

相关问题