更新的答案
由于将函数添加到Array原型的所有弊端,我正在更新此答案以提供使语法与问题中最初要求的语法相似的替代方法。
class TravellerCollection extends Array { sum(key) { return this.reduce((a, b) => a + (b[key] || 0), 0); }}const traveler = new TravellerCollection(...[ { description: 'Senior', Amount: 50}, { description: 'Senior', Amount: 50}, { description: 'Adult', Amount: 75}, { description: 'Child', Amount: 35}, { description: 'Infant', Amount: 25 },]);console.log(traveler.sum('Amount')); //~> 235原始答案
由于它是一个数组,因此您可以向Array原型添加一个函数。
traveler = [ { description: 'Senior', Amount: 50}, { description: 'Senior', Amount: 50}, { description: 'Adult', Amount: 75}, { description: 'Child', Amount: 35}, { description: 'Infant', Amount: 25 },];Array.prototype.sum = function (prop) { var total = 0 for ( var i = 0, _len = this.length; i < _len; i++ ) { total += this[i][prop] } return total}console.log(traveler.sum("Amount"))


