我有一个对象数组。我希望能够创建一个将求和并返回true的每个isSaved字段的函数。
var arrInductedInfo = [];
var InductedInfo = function () { };
InductedInfo.prototype = {
SerialNumber: null,
isSaved: false,
TestData: function (msg) {
this.testfield = msg;
alert(this.testfield);
}
};
我当前正在使用此方法,但是,正如您所看到的,我正在使用数组名称。我的意思是,它可以工作...但是它并不是真正可重用的,因为我正在调用数组的特定实例:
InductedInfo.prototype.TotalSaved = function () {
var total = 0;
for (var isSaved in arrInductedInfo) {
if (isSaved) total += 1;
}
return total;
}
有没有办法以更通用的方式完成此任务?谢谢您的帮助。
最佳答案
您必须在Array.prototype
中创建一个函数。您不能在InductedInfo.prototype
中执行此操作。
Array.prototype.totalInductedInfoSaved = function() {
var tot = 0;
for (var i=0, el; el = this[i]; i++) {
if (el instanceof InductedInfo && el.isSaved) tot ++;
}
return tot;
}
var arr = [new InductedInfo(), new InductedInfo()];
arr[0].isSaved = true;
arr.totalInductedInfoSaved();
> 1
arr[1].isSaved = true;
arr.totalInductedInfoSaved();
> 2