循环对象数组

时间:2014-10-25 11:35:16

标签: javascript arrays

我试图将所有数组循环到一个对象中,然后检查数组中的对象是否设置了imageUrl,如果没有。然后将其设置为默认值。

portfolio [i]返回undefined。

that.portfolio = {
     applications = [
         { imageUrl: "" }
     ],
     websites = [
         { imageUrl: "" }
     ]
}

var setDefaultImage = function () {
                var portfolio = that.portfolio;
                var defaultImageUrl = "App/Main/images/shared/defaultImg64x64.png";

                for (var i = 0; i < Object.keys(portfolio).length; i++)
                    portfolio[i].forEach(function (currentObj) {
                        if (!currentObj.imageUrl) {
                            currentObj.imageUrl = defaultImageUrl;
                        }
                    });
            }

1 个答案:

答案 0 :(得分:0)

portfolio是一个不是数组的对象,所以循环它的正确方法是for-in循环:

for (var key in portfolio) {
    portfolio[key].forEach(function(currentObj) {
        if (!currentObj.imageUrl) {
            currentObj.imageUrl = defaultImageUrl;
        }    
    });
}

正如您所看到的,不需要在Object.keys(portfolio)过度思考,但如果您愿意,也可以使用它:

var keys = Object.keys(portfolio);
for (var i = 0; i < keys.length; i++) {
    portfolio[keys[i]].forEach(function (currentObj) {
        if (!currentObj.imageUrl) {
            currentObj.imageUrl = defaultImageUrl;
        }
    });    
}