javascript - 在javascript中迭代数组和concat
问题描述
说我有一个数组[["a", "b"], ["c", "d"]]
我如何迭代或减少或映射或加入这个数组并获取["ac", "ad", "bc", "bd"]
,如果数组像[["a", "b"], ["c", "d"], ["e", "f"]]
我应该得到的一样["ace", "acf", "ade", "adf", "bce", "bcf", "bde", "bdf"]
我们如何使用数组迭代或方法来实现这一点?
我尝试使用reduce:
const output = [];
const sol = array.reduce((cum, ind) => {
for (let i = 0; i <= cum.length; i++ ) {
for (let j = 0; j <= ind.length; j++) {
output.push(`${cum[i]} + ${ind[j]}`);
}
}
});
console.log(output);
但我没有得到确切的输出。
解决方案
我会使用递归方法:遍历第一个数组,然后进行递归调用以检索第二个和以后的数组的字符串。递归执行此操作,直到到达数组的末尾。然后,在返回的路上,您可以推送与当前数组的每个元素连接的递归结果:
const recurse = (arr) => {
const subarr = arr.shift();
if (!subarr) return;
const result = [];
for (const laterStr of recurse(arr) || ['']) {
for (const char of subarr) {
result.push(char + laterStr);
}
}
return result;
}
const arr = [["a", "b"], ["c", "d"], ["e", "f"]];
console.log(recurse(arr));
推荐阅读
- c# - UWP AdvancedCollectionView 按日期时间排序?抛出异常
- tensorflow - 在张量流中按规范裁剪权重?
- angular - Angular + NET Core “(未知 url)的 Http 失败响应:0 未知错误”
- linux - 安装 ubuntu 18.04(双启动)后无法登录 Elementary
- cmake - CMAKE:更新函数中的列表不起作用
- salesforce - Power BI SFDC 对象连接 - 任务 - 导航查询错误
- sql - 如何在 Django 中创建一个忽略 NULL 的唯一约束?
- angular5 - angular 5 的静态脚本文件停止使用带有 docker swarm 的 traefik 代理
- bash - 从 bash 列表中过滤掉比另一个文件更旧的文件
- apache - .htaccess 中的 301 重定向问题