首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迭代对象哈希表

迭代对象哈希表
EN

Stack Overflow用户
提问于 2012-04-08 11:06:15
回答 6查看 83.9K关注 0票数 55

我试图使用哈希表,以便选择存储在数组/对象中的特定对象。但是,我在遍历对象时遇到了问题。

代码语言:javascript
运行
复制
var pins= {};
pins[6] = '6';
pins[7] = '7';
pins[8] = '8';

$('#result3').append('<div>Size: ' + Object.size(pins) + '</div>');
for(var i = 0; i < Object.size(pins); i++) {
    $('#result3').append('<div>' + pins[i] + '</div>');
}

JSFiddlehttp://jsfiddle.net/7TrSU/

正如您在使用对象TEST 3存储数据的pin中所看到的那样,在遍历对象pin时,我得到了undefined

循环通过pin的正确方法是什么?

编辑

如果我不只是pin[6] = '6',而是让pin6 =一个对象,并且我想循环遍历它们的所有id属性,会发生什么?我正在做的事情的代码片段..。

代码语言:javascript
运行
复制
for(var i = 0; i < json.length; i++) {
    markerId = json[i].listing_id

    // Place markers on map
    var latLng = new google.maps.LatLng(json[i].lat, json[i].lng);
    var marker = new google.maps.Marker({
                listing_id: markerId,
                position: latLng,
                icon: base_url + 'images/template/markers/listing.png',
    });

    markers[markerId] = marker;
}

for(var marker in markers) {
    console.log('marker ID: ' + marker.listing_id);
    mc.addMarker(marker);
}

上面的console.log返回未定义的值,如果我选择console.log(marker),则得到marker.listing_id的值。抱歉我搞糊涂了!

我设法让它与$.each(markers, function(i, marker){});一起工作,但是为什么上面的for..in不能工作呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-04-08 11:09:33

不要使用for(i=0; i<size; i++)循环。相反,请使用:

  1. Object.keys(pins)获取属性列表,并通过它循环,或者
  2. 使用for ( key_name in pins)Object.hasOwnProperty (排除继承属性)结合使用for ( key_name in pins)来循环属性.

第三个测试用例的问题是它读取键0、1和2的值(而不是6、7、8)。

票数 51
EN

Stack Overflow用户

发布于 2012-04-08 11:10:01

代码语言:javascript
运行
复制
var hash = {}
hash[key] = value

Object.keys(hash).forEach(function (key) { 
    var value = hash[key]
    // iteration code
})
票数 109
EN

Stack Overflow用户

发布于 2012-04-08 11:10:11

由于您使用的是jQuery:

代码语言:javascript
运行
复制
jQuery.each(pins, function (name, value) {
    $('#result3').append('<div>' + name + "=" + value + '</div>');
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10062317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档