基于JS模仿windows文件按名称排序效果

JavaScript014

基于JS模仿windows文件按名称排序效果,第1张

作个记录,主要是对数字的处理,如果数字的前面字符是相同的,则数字以值比较,而不是单个字符之间的比较。

function

SortLikeWin(v1,

v2)

{

var

a

=

v1.name

var

b

=

v2.name

var

reg

=

/[0-9]+/g

var

lista

=

a.match(reg)

var

listb

=

b.match(reg)

if

(!lista

||

!listb)

{

return

a.localeCompare(b)

}

for

(var

i

=

0,

minLen

=

Math.min(lista.length,

listb.length)

i

<

minLen

i++)

{

//数字所在位置序号

var

indexa

=

a.indexOf(lista[i])

var

indexb

=

b.indexOf(listb[i])

//数字前面的前缀

var

prefixa

=

a.substring(0,

indexa)

var

prefixb

=

a.substring(0,

indexb)

//数字的string

var

stra

=

lista[i]

var

strb

=

listb[i]

//数字的值

var

numa

=

parseInt(stra)

var

numb

=

parseInt(strb)

//如果数字的序号不等或前缀不等,属于前缀不同的情况,直接比较

if

(indexa

!=

indexb

||

prefixa

!=

prefixb)

{

return

a.localeCompare(b)

}

else

{

//数字的string全等

if

(stra

===

strb)

{

//如果是最后一个数字,比较数字的后缀

if

(i

==

minLen

-

1)

{

return

a.substring(indexa).localeCompare(b.substring(indexb))

}

//如果不是最后一个数字,则循环跳转到下一个数字,并去掉前面相同的部分

else

{

a

=

a.substring(indexa

+

stra.length)

b

=

b.substring(indexa

+

stra.length)

}

}

//如果数字的string不全等,但值相等

else

if

(numa

==

numb)

{

//直接比较数字前缀0的个数,多的更小

return

strb.lastIndexOf(numb

+

'')

-

stra.lastIndexOf(numa

+

'')

}

else

{

//如果数字不等,直接比较数字大小

return

numa

-

numb

}

}

}

}

使用方法,Array.sort(SortLikeWin)

以上所述是小编给大家介绍的基于JS模仿windows文件按名称排序效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

var time_sting = hour + ":" + minutes

var date_time_string = "Today is " + date_string + ". the time is now" + time_string + "."

注意:你定义的是time_sting ,但是用的却是time_string ,多了个 r

在开发过程中后端要求请求方式为post,但传输的数据格式为form表单formdata形式的。

在用axios插件请求数据时实现上述请求,可以添加 params 属性,但是这种方式会在请求url后面拼接请求参数,与post请求有些不符。