循环对象数组

Looping object arrays

本文关键字:数组 对象 循环      更新时间:2023-09-26

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

投资组合[i]返回未定义。

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;
                        }
                    });
            }

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;
        }
    });    
}