我试图将所有数组循环到一个对象中,然后检查数组中的对象是否设置了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;
}
});
}
答案 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;
}
});
}