console.log 字典循环返回函数而不是值
console.log on dictionary loop is returning functions instead of values
这张图片将有助于解释我的问题。
这是以下代码中控制台日志的结果。第一个控制台日志打印出预期的键值对数组。第二个控制台日志打印出预期的值,但也打印出一大堆函数。这似乎实际上在变量的值内,无法按原样使用。
我想在没有这种噪音的情况下循环遍历键值数组。我以前从未遇到过这个。不幸的是,我不确定如何尝试解决此问题,对此深表歉意。
这是代码,函数从评论中链接的堆栈溢出答案中略微改动。
//
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);
}
您有一些库正在向对象的原型添加属性。这些仍然是可迭代的,但在 console.log()
ing 对象时不会显示,因为那只显示对象自己的属性。
如果 url_parameters.hasOwnProperty(key)
.
,您应该只 运行 循环中的日志
此外,正如 Pamblam 指出的那样,您在应该创建对象时定义了一个数组。
var vars = [] 应该是 var vars = {}
对象基本上是具有 javascript 中函数的关联数组。
这张图片将有助于解释我的问题。
这是以下代码中控制台日志的结果。第一个控制台日志打印出预期的键值对数组。第二个控制台日志打印出预期的值,但也打印出一大堆函数。这似乎实际上在变量的值内,无法按原样使用。
我想在没有这种噪音的情况下循环遍历键值数组。我以前从未遇到过这个。不幸的是,我不确定如何尝试解决此问题,对此深表歉意。
这是代码,函数从评论中链接的堆栈溢出答案中略微改动。
//
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);
}
您有一些库正在向对象的原型添加属性。这些仍然是可迭代的,但在 console.log()
ing 对象时不会显示,因为那只显示对象自己的属性。
如果 url_parameters.hasOwnProperty(key)
.
此外,正如 Pamblam 指出的那样,您在应该创建对象时定义了一个数组。
var vars = [] 应该是 var vars = {}
对象基本上是具有 javascript 中函数的关联数组。