(五)替代指定數(shù)據(jù)提取弛矛。
1.????找到目標值并用指定值替換后提取
List.ReplaceValue(list as?list, oldValue as?any, newValue as?any,replacer as?function)as?list
第1參數(shù)是列表佣耐;第2參數(shù)是被替換的舊值(不指定格式);第3參數(shù)是去替換的新值(不指定格式)屈留;第4參數(shù)替換函數(shù)局冰。替換函數(shù)由2個。一個是數(shù)值替換Replacer.ReplaceValue灌危,一個是文本替換Replacer.ReplaceText康二;4個函數(shù)都被必選參數(shù)。需要注意的是空值計算列表和空列表代表不一樣的含義勇蝙。
例:
List.ReplaceValue({1..10},1,2,Replacer.ReplaceValue)={2,2..10}
解釋:因為列表里面是數(shù)值沫勿,所以用Replacer.ReplaceValue函數(shù)進行替換。
List.ReplaceValue({"a".."z"},"a","b",Replacer.ReplaceText)={"b","b".."z"}
解釋:因為列表里面是文本味混,所以用Replacer.ReplaceText函數(shù)進行替換产雹。
List.ReplaceValue({#date(2018,11,11),#datetime(2018,11,11,12,0,0)},#date(2018,11,11),#date(2019,11,11),Replacer.ReplaceValue)={#date(2019,11,11),#datetime(2018,11,11,12,0,0)}
解釋:如果是替換時間類型的話,要用Replacer.ReplaceValue函數(shù)進行替換翁锡。
List.ReplaceValue({},{},"a",Replacer.ReplaceValue)={}
解釋:因為是空列表蔓挖,所以也就不存在值的概念,返回的當然也是空列表馆衔。
List.ReplaceValue({null},null,"a",Replacer.ReplaceText)={null}
解釋:因為空值是需要用Replacer.ReplaceValue來進行替換瘟判,使用Replacer.ReplaceText則無效。
List.ReplaceValue({null},null,"a",Replacer.ReplaceValue)={"a"}
解釋:替換空值需要用到函數(shù)Replacer.ReplaceValue
List.ReplaceValue({"a"},"a",null,Replacer.ReplaceValue)={null}
解釋:如果是要用空值替換對應的值角溃,也是需要用Replacer.ReplaceValue函數(shù)拷获。
2.????指定范圍內(nèi)進行值替換
List.ReplaceRange(list as?list, index as?number, count as?number,replaceWith as?list)as?list
第1參數(shù)是列表格式;第2參數(shù)是索引的數(shù)字减细,索引是0起始匆瓜;第3參數(shù)是替換的個數(shù);第4參數(shù)是替換的列表格式未蝌;最終返回的也是列表格式陕壹。此外需要注意的是第2參數(shù)+第3參數(shù)的值要<=列表的值數(shù)量。通俗理解就是用一個列表替換一個指定范圍列表树埠。
例:
List.ReplaceRange({1..10},0,1,{"a"})={"a",2..10}
解釋:找到索引起始值為1糠馆,替換1個,用"a"替換
List.ReplaceRange({1..10},1,5,{"a","b"})={1,"a","b",7..10}
解釋:找到索引起始值為2,連續(xù)替換5個怎憋,相當于{2..6}又碌,用{"a","b"}列表替換{2..6}
3.????對列表指定批量替換
List.ReplaceMatchingItems(list as?list, replacements as?list,?optional?equationCriteria as?any) as?list
第1參數(shù)是數(shù)據(jù)列表;第2參數(shù)是批量替換的列表绊袋,每一個新舊替換作為一個list并組合成一個總的list(相當于大list套小list毕匀,要有雙層嵌套{{}}格式);第3參數(shù)可以指定一個可選相等條件值來控制相等測試(也就是用來替代被替換的值)癌别。
例:
List.ReplaceMatchingItems({1..10}, {{1,"a"}})={"a",2..10}
解釋:用"a"替換1生成新列表
List.ReplaceMatchingItems({1..10}, {{1,"a"},{2,"b"})={"a","b",3..10}
解釋:用"a"替換1皂岔,用"b"替換2生成列表
List.ReplaceMatchingItems({{1..3},{1..10}},{{{1..3},{"a".."c"}}})={{"a".."c"},{1..10}}
解釋:用{"a".."c"}列表替換{1..3}列表并生成新的組合列表。單個列表用可以用多個值替換展姐,多個列表則需用列表進行替換躁垛。
List.ReplaceMatchingItems({1..5},{{1,0}},each_<3)={0,0,3,4,5}
解釋:使用第2參數(shù)的舊值和第3參數(shù)做比較剖毯,如果符合則替換條件為第3參數(shù),如果不符合教馆,替換條件則是第3參數(shù)的相反值逊谋。因為第2參數(shù)的舊值符合第3參數(shù)的條件,則替換條件就是第3參數(shù)<3土铺,所以1,2被0替換胶滋。
List.ReplaceMatchingItems({1..5},{{1,0}},each_>3)={0,0,0,4,5}
解釋:因為第2參數(shù)舊值不符合第3參數(shù)條件,所以條件為第3參數(shù)的相反悲敷,也就是<=3究恤,用0替換<=3的條件的值。
List.ReplaceMatchingItems({1..5,1,2},{{1,0}},each_>3)={0,0,0,4,5,0,0}
解釋:因為第2參數(shù)舊值不符合第3參數(shù)條件后德,所以替換條件是第3參數(shù)的相反值部宿,用0替換<3的條件值。
4.????生成重復的列表
List.Repeat(list as?list, count as?number) as?list
第1個參數(shù)是需要進行操作的列表探遵;第2個參數(shù)是重復的次數(shù)
List.Repeat({1},3)={1,1,1}
List.Repeat({1..10},2)={1..10}&{1..10}