Javascript 循环对象数组

Javascript 循环对象数组,javascript,arrays,Javascript,Arrays,我试图在一个对象中循环我的所有数组,然后检查数组中的对象是否设置了imageUrl,如果没有。然后将其设置为默认值 投资组合[i]收益未定义 that.portfolio = { applications = [ { imageUrl: "" } ], websites = [ { imageUrl: "" } ] } var setDefaultImage = function () {

我试图在一个对象中循环我的所有数组,然后检查数组中的对象是否设置了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;
                        }
                    });
            }
that.portfolio={
申请=[
{imageUrl:“”
],
网站=[
{imageUrl:“”
]
}
var setDefaultImage=函数(){
var组合=该投资组合;
var defaultImageUrl=“App/Main/images/shared/defaultImg64x64.png”;
对于(var i=0;i
公文包
是一个对象而不是一个数组,因此正确的循环方式应该是
for in
循环:

for (var key in portfolio) {
    portfolio[key].forEach(function(currentObj) {
        if (!currentObj.imageUrl) {
            currentObj.imageUrl = defaultImageUrl;
        }    
    });
}
如您所见,在这里使用
Object.keys(公文包)
无需过度思考,但如果您愿意,也可以使用它:

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;
        }
    });    
}
var-keys=Object.keys(投资组合);
对于(变量i=0;i