js、vbs二维数组排列组合示例

  js、vbs二维数组排列组合源代码,js、vbs二维数组全排列组合源代码

现在有一个不确定长度的数组,比如:
var temparr = [
            ["Fu", "Hai", "Huan"],
            ["Wei", "You"],
            ["Chong", "Tong", "Zhong"],
            ["1", "2", "3"]]
每一个数组的项长度也不确定,如何 遍历这个数组,得到如: FuWeiChong ,FuWeiTong。。。。这样的数据

 

  要实现这种数组的排列组合,需要使用到递算法。

  js实现二维数组排列组合示例如下,来源:http://www.cnblogs.com/artwl/archive/2011/10/20/2218838.html

  vbs实现依据js改编

<script>
    function doExchange(doubleArrays) {
        var len = doubleArrays.length;
        if (len >= 2) {
            var len1 = doubleArrays[0].length;
            var len2 = doubleArrays[1].length;
            var newlen = len1 * len2;
            var temp = new Array(newlen);
            var index = 0;
            for (var i = 0; i < len1; i++) {
                for (var j = 0; j < len2; j++) {
                    temp[index] = doubleArrays[0][i] +
                        doubleArrays[1][j];
                    index++;
                }
            }
            var newArray = new Array(len - 1);
            for (var i = 2; i < len; i++) {
                newArray[i - 1] = doubleArrays[i];
            }
            newArray[0] = temp;
            console.log(newArray)
            return doExchange(newArray);
        }
        else {
            return doubleArrays[0];
        }
    }
    var temparr = [
            ["Fu", "Hai", "Huan"],
            ["Wei", "You"],
            ["Chong", "Tong", "Zhong"],
            ["1", "2", "3"]];
    var ret = doExchange(temparr);
    document.write('结果:'+ret.length+'项<br>'+ret.join('<BR>'));
</script>

  vbs实现二维数组排列组合示例如下,运行下面代码需要在IE10-以下

<script language="vbscript">
    function concatArray(arr)
        dim l,len1,len2,newlen,temp(),index,newArray()
        l=ubound(arr,1)
        if l>=1 then
        len1=ubound(arr(0))
        len2=ubound(arr(1))
        newlen=(len1+1)*(len2+1)-1
        redim temp(newlen)
        index=0
        for i=0 to len1
          for j=0 to len2
            temp(index)=arr(0)(i)&arr(1)(j)
            index=index+1
          next
        next
        redim newArray(l-1)
        for i=2 to l
          newArray(i-1)=arr(i)
        next
        newArray(0)=temp
        concatArray=concatArray(newArray)
        else
        concatArray=arr(0)
      end if
    end function
    dim arr()
    redim arr(3)
    arr(0)=split("a,b,c",",")
    arr(1)=split("d,e",",")
    arr(2)=split("f,g,h,i",",")
    arr(3)=split("1,2,3",",")
    '''''更多,注意修改redim语句下标
    rst=concatArray(arr)
    document.write("结果:"&(ubound(rst)+1)&"<BR>"&join(rst,"<BR>"))
</script>

 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:js、vbs二维数组排列组合示例

评论(0)Web开发网
阅读(938)喜欢(0)JavaScript/Ajax开发技巧