javascript - 循环遍历具有增量属性名称的对象

标签 javascript

我正在尝试像数组一样循环访问一个对象。我正在努力将循环计数器附加到变量名称。

我有一个像这样的对象(output with dump(), which I found here):

object(2): {
  elem0:  array(4): {
    [0]:  string(27): "http://placehold.it/300x300"
    [1]:  string(3): "0.8"
    [2]:  string(4): "-150"
    [3]:  string(3): "200"
  }
  elem1:  array(4): {
    [0]:  string(27): "http://placehold.it/300x300"
    [1]:  string(3): "0.6"
    [2]:  string(3): "-70"
    [3]:  string(3): "458"
  }
}

这是我尝试循环它的方法:

jQuery(document).ready(function($) {

    // Provides object-measuring functionality
    Object.size = function(obj) {
        var size = 0, key;
        for (key in obj) {
            if (obj.hasOwnProperty(key)) size++;
        }
        return size;
    };

    // Returns the number of objects in my object
    var size = Object.size(window.depthElems);

    /*
    This is where I'm having difficulty.
    I would like to use window.depthElems.elem0,
    then window.depthElems.elem1, etc.
    */

    for (var i = 0; i < size; i++) {
        $('.wrapper').append('<img src="' + window.depthElems.elem+i+[0] + '" />'); 
    }

});

最佳答案

为了便于论证,我还将提供我的问题作为答案。您可以使用:

for(element in window.depthElems) {
    if(window.depthElems.hasOwnProperty(element)) {
        $('.wrapper').append('<img src="' + window.depthElems[element] + '" />');
    }
}

这不仅更加优雅,而且需要的代码也少得多。当然,如果有理由使用其他代码,请说出来。

注意:此代码经过编辑,还包括读取“数组”的功能,但问题是使其能够与“对象”一起使用。如果您使用“objects”,则“hasOwnProperty”检查是多余的。

注意#2:您还可以像Azder所说的那样使用var hasOwn = Object.prototype.hasOwnProperty;,这是一个很好的保障.

关于javascript - 循环遍历具有增量属性名称的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11655940/

相关文章:

javascript - 变量在for循环中被覆盖

javascript - 用于 JSP、Java EE 项目的 Assets 打包工具,如 jammit?

javascript - contenteditable 将插入符放在插入的跨度之外

javascript - 检查多个条件值不输出else语句

javascript - 在 Javascript 中动态创建项目

javascript - 参数 "style"在 formatText 函数中未定义?

javascript - 如何使用JS在中间输入文本中动态插入字符

javascript - 查看未使用 Durandal/Knockout 更新 SPA 中的绑定(bind)

javascript - 在 JavaScript 中将 float 转换为整数,四舍五入到小数点后两位

javascript - 在 Transport.read 函数中访问 dataItem