Heim >Web-Frontend >js-Tutorial >ASP 过滤数组重复数据函数(加强版)_javascript技巧

ASP 过滤数组重复数据函数(加强版)_javascript技巧

WBOY
WBOYOriginal
2016-05-16 18:25:581112Durchsuche

函数代码:

复制代码 代码如下:

'过滤数组重复函数名称:array_no(cxstr1,cxstr2,cxstr3)
'cxstr1:任意的字符串,自动识别
'cxstr2:cxstr1中分割符号。
'cxstr3:提取结果中的某一位置字串,等于0时返回为全部,大于数组下标时返回最后.
'使用于二维数组
'*******************************************************
function array_no(cxstr1,cxstr2,cxstr3)
if len(cxstr3) > 0 then
if not IsNumeric(cxstr3) then
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
else
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
if isarray(cxstr1) then
array_no = "对不起,参数1不能为数组"
Exit Function
end if
if cxstr1 = "" or isempty(cxstr1) then
array_no = "没有数据"
Exit Function
end if
ss = split(cxstr1,cxstr2)
cxs=cxstr2&ss(0)&cxstr2
sss=cxs
for m = 0 to ubound(ss)
cc = cxstr2&ss(m)&cxstr2
if instr(sss,cc)=0 then
sss = sss&ss(m)&cxstr2
end if
next
array_no = right(sss,len(sss)-len(cxstr2))
array_no = left(array_no,len(array_no)-len(cxstr2))
if cxstr3 0 then
cx_sp = split(array_no,cxstr2)
if cxstr3 > ubound(cx_sp) then
array_no = cx_sp(ubound(cx_sp))
else
array_no = cx_sp(cxstr3)
end if
end if
end function%>


下面是测试代码:
复制代码 代码如下:

s2 = "1,2,3,11,22,33,12,13,14,11,33,333,14"
s3 = ""
s4 = "sdf,abc,12,2,2,abc"
s5 = split(s4)
response.write "字串为字符时:"&array_no(s1,",",0)&"
"
response.write "字串为数字时:"&array_no(s2,",",0)&"
"
response.write "字串为空时:"&array_no(s3,",",0)&"
"
response.write "字串为混合时:"&array_no(s4,",",0)&"
"
response.write "字串为数组时:"&array_no(s5,",",0)&"
"
response.write "字串为未知变量时:"&array_no(s33,",",0)&"
"
response.write "提取某一位时,没有超过下标时:"&array_no(s1,",",2)&"
"
response.write "提取某一位时,超过下标时:"&array_no(s1,",",200)&"
"%>

测试结果:
复制代码 代码如下:

字串为字符时:abc,aa,bb,cdef,bc,abcdef,hhgg,gggg,cde,edc
字串为数字时:1,2,3,11,22,33,12,13,14,333
字串为空时:没有数据
字串为混合时:sdf,abc,12,2
字串为数组时:对不起,参数1不能为数组
字串为未知变量时:没有数据
提取某一位时,没有超过下标时:bb
提取某一位时,超过下标时:edc


脚本之家增强版本: 解决了数组常见错误
复制代码 代码如下:

'*******************************************************
'过滤数组重复函数名称:array_no(cxstr1,cxstr2,cxstr3)
'cxstr1:任意的字符串,自动识别
'cxstr2:cxstr1中分割符号。
'cxstr3:提取结果中的某一位置字串,等于0时返回为全部,大于数组下标时返回最后.
'使用于二维数组
'*******************************************************
function array_no(cxstr1,cxstr2,cxstr3)
if len(cxstr3) > 0 then
if not IsNumeric(cxstr3) then
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
else
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
if isarray(cxstr1) then
array_no = "对不起,参数1不能为数组"
Exit Function
end if
if cxstr1 = "" or isempty(cxstr1) then
array_no = "没有数据"
Exit Function
end if
do while instr(cxstr1,",,")>0
cxstr1=replace(cxstr1,",,",",")
loop
if right(cxstr1,1)="," then
cxstr1=left(cxstr1,len(cxstr1)-1)
end if
ss = split(cxstr1,cxstr2)
cxs=cxstr2&ss(0)&cxstr2
sss=cxs
for m = 0 to ubound(ss)
cc = cxstr2&ss(m)&cxstr2
if instr(sss,cc)=0 then
sss = sss&ss(m)&cxstr2
end if
next
array_no = right(sss,len(sss)-len(cxstr2))
array_no = left(array_no,len(array_no)-len(cxstr2))
if cxstr3 0 then
cx_sp = split(array_no,cxstr2)
if cxstr3 > ubound(cx_sp) then
array_no = cx_sp(ubound(cx_sp))
else
array_no = cx_sp(cxstr3)
end if
end if
end function

s1 = "abc,aa,bb,cdef,bc,abcdef,hhgg,gggg,cde,edc,333,,,,,333,7,,,,"
s2 = "1,2,3,11,22,33,12,13,14,11,33,333,14,333,,,,,333,7,,,,"
s3 = ""
s4 = "sdf,abc,12,2,2,abc,333,,,,,333,7,,,,"
s5 = split(s4)
response.write "字串为字符时:"&array_no(s1,",",0)&"
"
response.write "字串为数字时:"&array_no(s2,",",0)&"
"
response.write "字串为空时:"&array_no(s3,",",0)&"
"
response.write "字串为混合时:"&array_no(s4,",",0)&"
"
response.write "字串为数组时:"&array_no(s5,",",0)&"
"
response.write "字串为未知变量时:"&array_no(s33,",",0)&"
"
response.write "提取某一位时,没有超过下标时:"&array_no(s1,",",2)&"
"
response.write "提取某一位时,超过下标时:"&array_no(s1,",",200)&"
"
%>

主要是增加了判断
复制代码 代码如下:

do while instr(cxstr1,",,")>0
cxstr1=replace(cxstr1,",,",",")
loop
if right(cxstr1,1)="," then
cxstr1=left(cxstr1,len(cxstr1)-1)
end if
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn