(六)刪除指定數(shù)據(jù)進(jìn)行提取
1.?????刪除指定數(shù)據(jù)進(jìn)行提取
List.RemoveRange(list as?list, index as?number,?optional?count as?number) as?list
第1參數(shù)為數(shù)據(jù)列表章姓;第2參數(shù)為索引數(shù)字格式降传,從0開(kāi)始箍邮;第3參數(shù)為刪除的數(shù)量,默認(rèn)為1除破,如果為0則代表不刪除,同時(shí)(第2參數(shù)+第3參數(shù))<=列表值的數(shù)量骗露;最終生成的是列表
例:
List.RemoveRange({1..10},0)={2..10}
List.RemoveRange({1..10},3,5)={1..3,9,10}
解釋:第2參數(shù)索引3代表是第4位师枣,也就是數(shù)值4,從此位置開(kāi)始連續(xù)刪除之后的5個(gè)值(也就是4-8)歪今。
2.?????刪除空值后進(jìn)行提取
List.RemoveNulls(list as?list) as?list
對(duì)于列表中的空值進(jìn)行刪除嚎幸,生成一個(gè)新的列表,只有1個(gè)參數(shù)寄猩。也可以理解為對(duì)一個(gè)列表選擇不等于空值嫉晶。List.Select(列表, each _<>null)
例:
List.RemoveNulls({null,1,2})={1,2}
List.Select({null,1,2},each _<>null)={1,2}
3.?????批量刪除匹配值后提取
List.RemoveMatchingItems(list1 as?list, list2 as?list,?optional?equationCriteria as?any) as?list
從列表1從刪除列表2的指定值,如果沒(méi)找到則返回原始list1。第1參數(shù)為原始列表替废;第2參數(shù)為要?jiǎng)h除的值列表箍铭;第三參數(shù)是可以指定一個(gè)可選相等條件來(lái)空值的測(cè)試。
例:
List.RemoveMatchingItems({1..10},{5..10})={1..4}
List.RemoveMatchingItems({#date(2018,11,11),1..10,"a".."z"},List.Transform({0..364},(x)=>Date.AddDays(#date(2018,1,1),x)))={1..10,"a".."z"}
解釋椎镣,通過(guò)List.Transform函數(shù)生成一個(gè)2018年的時(shí)間列表诈火,這樣就可以把原來(lái)列表中有關(guān)2018年的時(shí)間都可以去除。
List.RemoveMatchingItems({1..10},{5}, each_=5)={1..4,6..10}
解釋:因?yàn)榈?參數(shù)是=5状答,則找到等于5的值冷守,并刪除
List.RemoveMatchingItems({1..10},{5}, each_<=5)={6..10}
解釋:因?yàn)榈?參數(shù)為{5},第3參數(shù)為<=5惊科,用第2參數(shù)和第3參數(shù)做比較拍摇,如果第2參數(shù)符合第3參數(shù)條件,則刪除條件即為第3參數(shù)馆截;如果第2參數(shù)不符合第3參數(shù)條件充活,則返回第3參數(shù)的相反值。
List.RemoveMatchingItems({1..10},{4}, each_>5)={5..10}
解釋:因?yàn)榈?參數(shù)不符合第3參數(shù)的條件孙咪,返回的結(jié)果是第三
List.RemoveMatchingItems({"a".."z"},{"b"},each_ >="a")={}
解釋:因?yàn)榈?參數(shù)符合第3參數(shù)堪唐,所以刪除條件為第3參數(shù),所有的值都大于"a"翎蹈,所以都被刪除淮菠,返回的是一個(gè)空列表。
4.?????從尾刪除列表的最后幾個(gè)數(shù)據(jù)
List.RemoveLastN(list as?list,?optionalcountOrCondition as?any) as?any
從列表尾刪除N個(gè)元素荤堪。第1參數(shù)是數(shù)據(jù)列表合陵;第2參數(shù)可以是個(gè)數(shù)也可以是條件,如果是數(shù)字則直接刪除最后N項(xiàng)的數(shù)據(jù)澄阳,如果是條件拥知,一旦不滿足條件即結(jié)束。
例:
List.RemoveLastN({1..10}, 3)={1..7}
List.RemoveLastN({1..10}, each _>5)={1..5}
解釋:因?yàn)閺暮箝_(kāi)始和5比碎赢,直到5為止結(jié)束低剔。所以返回的是1-5的列表。
List.RemoveLastN({1..10,1}, each _>5)={1..10,1}
解釋:因?yàn)閺暮箝_(kāi)始肮塞,第一個(gè)是1襟齿,和第2參數(shù)的條件比較,是不符合的枕赵,所以就結(jié)束對(duì)比猜欺,也就是沒(méi)有符合刪除的條件,返回的就是原列表{1..10,1}拷窜。
5.?????從頭刪除列表的最后幾個(gè)數(shù)據(jù)
List.RemoveFirstN(list as?list,?optionalcountOrCondition as?any) as?any
從列表頭刪除N個(gè)元素开皿。第1參數(shù)是數(shù)據(jù)列表涧黄;第2參數(shù)可以是個(gè)數(shù)也可以是條件,如果是數(shù)字則直接刪除最初的N項(xiàng)數(shù)據(jù)赋荆,如果是條件笋妥,一旦不滿足條件即結(jié)束。
例:
List.RemoveFirstN({1..10},3)={4..10}
List.RemoveFirstN({1..10}, each _<5)={5..10}
解釋:因?yàn)閺念^開(kāi)始和小于5比糠睡,直到5為止結(jié)束挽鞠。所以返回的是5-10的列表。
List.RemoveFirstN({10,1..10}, each _<5)={10,1..10}
解釋:因?yàn)閺暮箝_(kāi)始狈孔,第一個(gè)是10,和第2參數(shù)的條件比較材义,是不符合的均抽,所以就結(jié)束對(duì)比,也就是沒(méi)有符合刪除的條件其掂,返回的就是原列表{10,1..10}油挥。
6.?????根據(jù)新列表刪除舊列表中的值
List.RemoveItems(list1 as?list, list2 as?list) as?list
第1個(gè)參數(shù)是需要被替換的列表;第2個(gè)參數(shù)是去要?jiǎng)h除的值列表款熬;返回生成的是新列表格式深寥。
例:
List.RemoveItems({1..10},{5..10})={1..4}
List.RemoveItems({1,2,3,2,1},{1,2})={3}
List.RemoveItems({"a","b","c",1,2,3,"一","二"},{"a".."z"})={1..3,"一","二"}
解釋:因?yàn)榈?參數(shù)是英文字母的列表,所以把第1參數(shù)舊列表中所有英文26個(gè)字母單字都刪除了贤牛。
問(wèn):那如何刪除列表中值包含"a"的所有元素惋鹅?
List.RemoveItems({"ab","bc"},List.FindText({"ab","bc"},"a"))={"bc"}
解釋:因?yàn)橐紤]到包含,可以參考4List.FindText函數(shù)殉簸,找到哪些包含"a"的列表值并生成一個(gè)新的需要?jiǎng)h除的列表闰集,最后通過(guò)List.RemoveItems函數(shù)來(lái)進(jìn)行刪除。