2017-04-12 48 views
1

我使用以下表达式来返回一行中所有值串联的md5散列。从forEach中排除一列

md5(forEach(row.columnNames,cn,if(isNull(cells[cn]),"",cells[cn].value)).join("|")) 

这是创建一个简单的索引来识别重复项目(我不希望在此阶段删除它们)。但是,我刚刚意识到,因为其中一列包含数据集的唯一索引,所以无法散列每列,因为包含此列显然会使每个散列都是唯一的! (duh)

有没有办法从forEach循环中排除指定列? A排序的foreach除了这...

感谢

回答

0

假设你要排除的列是第一位的,你可以子集row.columnNames这样的:

md5(forEach(row.columnNames.slice(1),cn,if(isNull(cells[cn]),"",cells[cn].value)).join("|")) 

如果你喜欢排除它的名字列(例如,“ID”),你应该使用filter()

md5(forEach(filter(row.columnNames, v, v!="ID"),cn,if(isNull(cells[cn]),"",cells[cn].value)).join("|")) 

同样,你也可以使用filter()给我根据条件排除/排除列名(此处:排除其名称中包含大写“C”的列):

filter(row.columnNames, v, v.contains("C")==false) 
+1

太棒了!所有的解决方案完美地工作,并感谢包括两个选项 – ltrbrooks