C#/JS 获取二维数组组合

C#获取二维数组组合

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace HF.SHOP.WebSite
{
    public partial class Demo : System.Web.UI.Page
    {

        List<List<string>> P_StringLL = new List<List<string>>();
        List<string> P_tmpStrL = new List<string>();

        protected void Page_Load(object sender, EventArgs e)
        {
            List<string> al = new List<string>();
            al.Add("红色");
            al.Add("黑色");
            al.Add("紫色");
            al.Add("白色");
            P_StringLL.Add(al);

            al = new List<string>();
            al.Add("小号");
            al.Add("中号");
            al.Add("大号");
            al.Add("加大号");
            P_StringLL.Add(al);

            al = new List<string>();
            al.Add("男同志");
            al.Add("女同志");

            P_StringLL.Add(al);

            GroupArray("", P_StringLL, 0);

            StringBuilder sb = new StringBuilder();

            foreach (string  str in P_tmpStrL)
            {
                sb.AppendLine(str + "<br/>");
            }

            Label1.Text = "总共有:" + P_tmpStrL.Count.ToString() + "种组合";
            Label2.Text = sb.ToString();
        }

        //组合计算
        void GroupArray(string tmpStr, List<List<string>> strLL, int index)
        {
            int count = strLL.Count;

            if (count <= index)
            {
                if (tmpStr.Length > 0)
                {
                    P_tmpStrL.Add(tmpStr);
                }

                return;
            }

            List<string> strL = strLL[index];

            foreach (string str in strL)
            {
                GroupArray(tmpStr + str, strLL, index + 1);
            }

        }
    }
}

JS代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="HF.SHOP.WebSite.Demo" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="UIResources/scripts/jquery.min.2.0.0.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
        <asp:Label ID="Label2" runat="server" Text=""></asp:Label>

        <div id="cou"></div>
        <ul id="list">

        </ul>
    </div>
    </form>

    <script type="text/javascript">

        var array = [[‘红色‘, ‘黑色‘, ‘白色‘], [‘小号‘, ‘中号‘, ‘加大‘], [‘男‘, ‘女‘]];
        var results = new Array(); //创建一个数组
        var len = array.length;
        var indexs = {};

        $(document).ready(function () {
            GetResults(-1);

            $("#cou").html("共有" + results.length + "种组合;<br/>");
            for (var a = 0; a < results.length; a++)
            {
                $("#list").append("<li>" + results[a] + "</li>");
            }
        });

        function GetResults(start) {
            start++;
            if (start > len - 1) {
                return;
            }
            if (!indexs[start]) {
                indexs[start] = 0;
            }
            if (!(array[start] instanceof Array)) {
                array[start] = [array[start]];
            }
            for (indexs[start] = 0; indexs[start] < array[start].length; indexs[start]++) {
                GetResults(start);
                if (start == len - 1) {
                    var temp = [];
                    for (var i = len - 1; i >= 0; i--) {
                        if (!(array[start - i] instanceof Array)) {
                            array[start - i] = [array[start - i]];
                        }
                        temp.push(array[start - i][indexs[start - i]]);
                    }
                    results.push(temp);
                }
            }

        }
    </script>
</body>
</html>
时间: 2024-10-13 04:30:34

C#/JS 获取二维数组组合的相关文章

js之二维数组定义和初始化三种方法

方法一:直接定义并且初始化,这种遇到数量少的情况可以用 var _TheArray = [["0-1","0-2"],["1-1","1-2"],["2-1","2-2"]] 方法二:未知长度的二维数组 var tArray = new Array();   //先声明一维 for(var k=0;k<i;k++){        //一维长度为i,i为变量,可以根据实际情况改变

C++获取二维数组的元素个数

C/C++获取二维数组的大小/长度/元素个数 int p[5][6]; int lenTotal = sizeof(p) / sizeof(int); //30 int lenLow = sizeof(p[0]) / sizeof(int); //6 int lenHigh = lenTotal / lenLow; //5

二维数组 组合方案

例子: [ ["160514110637d4800f000005"], ["160514110639d4800f000009","160514110639d4800f00000a","160514110639d4800f00000b"], ["160514110639d4800f00000d","160514110639d4800f00000e","160514110639d4

获取二维数组里面实际存有数据的行数

写程序时遇到需要获取二维数组里面实际存有数据的行数,看到几篇博客中获取数组行数用的居然是array.Rank方法.这是获取维度的方法啊,我在下面贴出了我找到的正确的方法,很实用. /// <summary> /// 获取二维数组里面实际存有数据的行数 /// </summary> public static List<int> GetHasValueRowIndex(string[,] arr) { var hasValueRowIndex = new List<

PHP获取二维数组指定字段值的和

array_sum(array_column($arr, 'num')); //获取二维数组 num字段的和 $arr = [ [ 'device_uid' => '123456', 'num' => '5', ], [ 'device_uid' => '123457', 'num' => '2', ], [ 'device_uid' => '123458', 'num' => '4', ], ]; echo '<pre>'; //先对二维数组进行处理,再对

JS的二维数组

今天,记录一下JS的二位数组,并附上例题. 一.二维数组的本质:数组中的元素又是数组. 其实,我们都见过这样的二维数组,只不过没在意罢了,例如: var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]] //这就是一个二位数组arr[2][3]; // 11 注意:表示第三列第4行所在的元素.角标从0开始 二.下面介绍二维数组的初始化 记住了二维数组的本质,初始化也难不倒我们了.看一下实例 实例一: var arr = [[1,2],[a,

js关于二维数组输出的问题

最近在学习js,之前在上课的时候无论是C++还是java都有学过二维数组,然而宝宝居然不知道二维数组要怎么输出!!!之前是有多渣多混日子啊...哎,心碎成了渣渣...让我乘热打铁加深下记忆... 二维数组必须一行一行输出才能输出二维的你想要的样子,你应该懂得,不然输出的就是所有元素在一行或者直接不显示.举个例子: var infos =[["小A","女",21,"大一"], ["小B","男",23,&q

Java 数组 获取二维数组的行数和列数

对于Object[][] array,array.length返回行数,array[0].length返回列数,元素个数为array.length*array[0].length. 参考资料 在JAVA中怎样求二维数组的行数和列数? 原文地址:https://www.cnblogs.com/WJQ2017/p/8412615.html

【Java】获取二维数组行列长度

二维数组int array[][] = new int[3][3]; 行长度:array.length 列长度:array[i].length 原文地址:https://www.cnblogs.com/yuange678/p/10371641.html