我知道 Javascript 对象足够灵活,它们可以模仿常见的哈希数组功能(键作为字符串,值作为原始类型,能够按键/值循环)...
我有这个例子,但我不明白为什么它不起作用:
var hash = {
'a' : '',
'b' : '',
'c' : '',
}
其中一个值的初始化如下:
hash['a'] = 5;
然后我尝试循环它们:
var keys = Object.keys(hash);
for(var i in keys){
console.log(hash[i]);
}
结果是 3 '未定义'。
为什么会发生这种情况?
最佳答案
您遇到的问题是您正在迭代 Object.keys
数组的键(这些键是整数 0、1、2...),并且您尝试获取属性使用这些整数的hash
。
这里不需要Object.keys
:
for(var i in hash){
console.log(hash[i]);
}
如果您确实想使用Object.keys
,请迭代数组的元素:
var keys = Object.keys(hash);
for(var i=0; i<keys.length; i++){
console.log(hash[keys[i]]);
}
或
Object.keys(hash).forEach(function(i){
console.log(hash[i]);
});
关于javascript - 如何在 Javascript 中镜像哈希功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23652933/