javascript - 如何在 Javascript 中镜像哈希功能?

标签 javascript

我知道 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/

相关文章:

javascript - 闪烁文本跨浏览器

javascript - 有没有办法使用 @azure/msal-angular 登录用户 azure 订阅 ID?

javascript - 获取 jQuery :not() selector to work

javascript - 网络错误 : req. headers.forEach Apollo Client Angular4

javascript - 在帖子中格式化 JSON

javascript - Angular 4无法推送未定义的数组

javascript - Wordpress 联系表 7 单选按钮值重定向不起作用

javascript - 如何以正确的方式从 JavaScript 获取 contextPath?

javascript - 表达 Mongoose 在找到后在 View 上显示数据

JavaScript 原型(prototype)属性 : Prototype based Inheritance