数组排序系列(6)

161 篇文章 16 订阅
55 篇文章 4 订阅
JavaScript排序法 - 字符排序

使用JS进行字符排序,比数字排序更简单。

function sortarr(para)
	{
		arr=para.split(',');
		arr.sort	();
		return arr;
	}

JS代码解析:
第4行代码调用数组的Sort方法,无需任何参数。


接下来在VBA中调用JS代码。

Sub JSSortText_ASC()
    Dim astrData As Variant
    Dim strName As String
    Dim objJS As Object
    Dim strSortedName  As String
    astrData = Array("Mike", "Tim", "Jane", "Jim", "Alex", "Helen", "Jessica", "Julie", "Chris", "Rick")
    strName = Join(astrData, ",")
    Debug.Print "Original Data: " & strName
    Set objJS = CreateObject("msscriptcontrol.scriptcontrol")
    objJS.Language = "javascript"
    objJS.addcode "function sortarr(para){arr=para.split(',');arr.sort();return arr;}"
    strSortedName = objJS.eval("sortarr('" & strName & "')")
    Debug.Print "After Sort(ASC): " & strSortedName
End Sub

运行代码结果如下。

Original Data: Mike,Tim,Jane,Jim,Alex,Helen,Jessica,Julie,Chris,Rick
After Sort(ASC): Alex,Chris,Helen,Jane,Jessica,Jim,Julie,Mike,Rick,Tim


如果需要实现字符降序排序,只需要略微修改JS代码。

Sub JSSortText_DSC()
    Dim astrData As Variant
    Dim strName As String
    Dim objJS As Object
    Dim strSortedName  As String
    astrData = Array("Mike", "Tim", "Jane", "Jim", "Alex", "Helen", "Jessica", "Julie", "Chris", "Rick")
    strName = Join(astrData, ",")
    Debug.Print "Original Data: " & strName
    Set objJS = CreateObject("msscriptcontrol.scriptcontrol")
    objJS.Language = "javascript"
    objJS.addcode "function sortarr(para){arr=para.split(',');arr.sort();arr.reverse();return arr;}"
    strSortedName = objJS.eval("sortarr('" & strName & "')")
    Debug.Print "After Sort(DSC): " & strSortedName
End Sub

运行代码结果如下。

Original Data: Mike,Tim,Jane,Jim,Alex,Helen,Jessica,Julie,Chris,Rick
After Sort(DSC): Tim,Rick,Mike,Julie,Jim,Jessica,Jane,Helen,Chris,Alex


相关文章链接:

数组排序系列(1)-- 冒泡法
数组排序系列(2)-- 极值法
数组排序系列(3)-- 工作表排序法
数组排序系列(4)-- JavaScript排序法(数字升序)
数组排序系列(5)-- JavaScript排序法(数字降序)
数组排序系列(6)-- JavaScript排序法(字符排序)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值