extjs 存储:总和字段,其中 acct = 12345
extjs store: sum field where acct = 12345
我正在尝试对我的 extjs 存储中的特定字段求和,其中 accountNumber = 'x'。
现在我正在循环,我想知道是否有更快的方法。
就像是
var sum = grid.getStore().sum('NameColumn').where('acct') = 12345;
我现在就是这样做的...
for (var i = 0; i < listCount; i++) {
sum = 0;
singleAccount = accountList[i];
//go through calc store, sum pnl column
calculatedPositionsDataStore.each(function (record) {
var tempAcctNum = record.get('AcctNum');
if (tempAcctNum === singleAccount)
{
tempAcctDesc = record.get('AcctShortCode');
tempTradeLevel = record.get('TradingLevel');
var pnl = record.get('CalcPLSett');
sum = sum + pnl;
}
}, this);
没有什么比遍历整个列表更快的了,但是有一些东西可以为您编写代码:
var sum = calculatedPositionsDataStore.query("AcctNum", singleAccount).sum("CalcPLSett");
在幕后,这与您的代码类似,但可读性和可重用性更高。
那么,这里发生了什么?
store.query
为您提供 MixedCollection
,其中仅包含特定 属性 与特定值匹配的那些条目。如果使用 queryBy
,您可以轻松编写更复杂的匹配函数。要生成此集合,它会遍历商店中的所有记录。
- MixedCollection 有一个方法
sum
,它采用 属性 名称,然后遍历集合中的所有记录并对命名的 属性. 求和
所以它可能甚至比你的代码慢几纳秒,但如果你经常需要它,在代码的不同部分,你可以节省在线路上的字节数。
我正在尝试对我的 extjs 存储中的特定字段求和,其中 accountNumber = 'x'。 现在我正在循环,我想知道是否有更快的方法。 就像是 var sum = grid.getStore().sum('NameColumn').where('acct') = 12345;
我现在就是这样做的...
for (var i = 0; i < listCount; i++) {
sum = 0;
singleAccount = accountList[i];
//go through calc store, sum pnl column
calculatedPositionsDataStore.each(function (record) {
var tempAcctNum = record.get('AcctNum');
if (tempAcctNum === singleAccount)
{
tempAcctDesc = record.get('AcctShortCode');
tempTradeLevel = record.get('TradingLevel');
var pnl = record.get('CalcPLSett');
sum = sum + pnl;
}
}, this);
没有什么比遍历整个列表更快的了,但是有一些东西可以为您编写代码:
var sum = calculatedPositionsDataStore.query("AcctNum", singleAccount).sum("CalcPLSett");
在幕后,这与您的代码类似,但可读性和可重用性更高。
那么,这里发生了什么?
store.query
为您提供MixedCollection
,其中仅包含特定 属性 与特定值匹配的那些条目。如果使用queryBy
,您可以轻松编写更复杂的匹配函数。要生成此集合,它会遍历商店中的所有记录。- MixedCollection 有一个方法
sum
,它采用 属性 名称,然后遍历集合中的所有记录并对命名的 属性. 求和
所以它可能甚至比你的代码慢几纳秒,但如果你经常需要它,在代码的不同部分,你可以节省在线路上的字节数。