注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
大家都知道Google Sheet和excel是可以用函数的,函数apply到每一个列,比如:C = A + B这样。
那么对于一个大型的表格(10k+ cols,10k+ rows),对于复杂的函数依赖比如有多重的 H = (C / D) ^ 2, C = A + B,如何做到修改值后可以快速的update相应的列呢?
我想到的方法:
第一种:
1. 在加载表格的时候就建立一个hashmap,里面列作为key,value就是list of 依赖于该key的其它列, ordered by priority(用上面的例子就是{C: [H], A: [C], B: [C], D: [H])。这样的话,每次update一个cell的时候,直接读hashmap,找到需要bubble up的列,再进行该列的update就可以了。
2. event trigger的话,可以给所有的cell加一个onChange event,然后event handler就直接来做步骤1的操作。
第二种:
直接对每个列建立一个messageChannel,然后如果某一列被update了的话,就trigger一个sendMessage: {channel: [H]},这样的话,对于任何有函数的列,直接subscribe函数内容里面对应列的message就行了。拿到message之后就recalculate。
这样不知道怎么样?有没有人有更好的办法?我总觉得我这方法比较笨。 |