2017-04-12 65 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