首页 新闻 会员 周边 捐助

js数组循环

0
[已解决问题] 解决于 2018-04-16 09:54

循环数组
arr = [
[1, 2],
[3, 4],
]

输出[13, 14, 23, 34];

循环数组
arr = [
[1, 2],
[3, 4],
[5, 6],
]
输出[135, 136, 145, 146, 235, 236, 245, 246]

循环的数组长度未知,数组的每个子数组长度未知。
要写一个通用的方法?

tristy的主页 tristy | 菜鸟二级 | 园豆:214
提问于:2018-04-09 23:08
< >
分享
最佳答案
0
function func(arr)    {
    var ans = [];
    var dfs = function(pos, d)    {
        if(pos >= arr.length)    {
            ans.push(d);
            return;
        }
        for(var i=0; i<arr[pos].length; i++)
            dfs(pos+1, d*10+arr[pos][i]);
    };
    dfs(0, 0);
    return ans;
}
奖励园豆:5
hehe_54321 | 小虾三级 |园豆:950 | 2018-04-13 13:19

虽然还没验证!不过还是感谢大佬的热心帮助!!!

tristy | 园豆:214 (菜鸟二级) | 2018-04-16 09:52
其他回答(4)
0

用递归

IPeanut | 园豆:223 (菜鸟二级) | 2018-04-10 08:57

我也晓得要用递归啊

支持(0) 反对(0) tristy | 园豆:214 (菜鸟二级) | 2018-04-10 09:10
0

定义一个方法,将你要递归的数组当参数传进来

心怀宇宙 | 园豆:643 (小虾三级) | 2018-04-10 09:18
0

为什么要用递归啊?你的树结构层级不定么?

会出现 [[[1,2],[3,4]],[5,6]]这种情况吗?

写代码的相声演员 | 园豆:517 (小虾三级) | 2018-04-10 09:34

不会

支持(0) 反对(0) tristy | 园豆:214 (菜鸟二级) | 2018-04-10 09:42
0
#include<iostream>
#include<string>
#include<math.h>
using namespace std;


int a[3][2]= {{1,2},{3,4},{5,6}};
int res[1005];
int ans[1005];
int q;
int p;
int x;
void dfs(int n)
{
    if(n==x)
    {
        for(int i=0;i<p;i++)
            ans[q]+=res[i]*pow(10.0,p-i-1);
        q++;
        return;
    }
    int l = sizeof(a[n])/sizeof(a[n][0]);
    for(int i=0;i<l;i++)
    {
        res[p++]=a[n][i];
        dfs(n+1);
        p--;
    }
}
int main()
{
    q=0;p=0;
    x = sizeof(a)/sizeof(a[0]);
    dfs(0);
    for(int i=0;i<q;i++)
    {
        printf("%d ",ans[i]);
    }
    printf("\n");
}

给定的都是二维数组哦。这是用c++写的,js写也差不多,for循环,数组和递归。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-04-10 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册