javascript - 将嵌套数组元素转换为字符串数组
问题描述
给定一个简单的嵌套数组数组,如下所示:
[
['a','b',],
['c','d'],
['e']
]
我正在寻找连接每个元素的值并创建一个像这样的数组:
['.a.c.e','.a.d.e','.b.c.e','.b.d.e']
这只是一个简单的示例,但实际上可能有超过 3 个嵌套数组和其中的任意数量的元素。
似乎它应该相对简单,但我就是无法绕开它,有人可以帮忙吗?
解决方案
由于数组长度未知,最好的方法是使用递归:
function conc(input) {
const output = [];
function _conc(input, partial) {
if (input.length === 0) {
return output.push(partial);
}
const [first, ...rest] = input;
first.forEach(itm => {
_conc(rest, partial + "." + itm)
});
}
_conc(input, "");
return output;
}
const input = [
['a','b',],
['c','d'],
['e']
]
console.log(conc(input))
或与flatMap
:
function conc(input) {
const [first, ...rest] = input;
return rest.length === 0
? first.map(itm => "." + itm)
: first.flatMap(itm => conc(rest).map(_itm => "." + itm + _itm));
}
const input = [
['a','b',],
['c','d'],
['e']
]
console.log(conc(input))
或减少:
const input = [
['a','b',],
['c','d'],
['e']
]
console.log(
input.reduce((acc, a) => acc.flatMap(i1 => a.map(i2 => i1 + "." + i2)), [""])
)
推荐阅读
- php - 如何使用自定义名称创建动态网页?
- reactjs - 如何正确地将类名传递给 react-admin 中的组件?
- mysql - 像“User_type 表”这样的 TYPE 表的目的是什么?
- python - tweepy - 使用光标时获取剩余的 Twitter api 速率限制
- android - 使用带有首选项的 NavController
- html - 如何使文本环绕图像而不留下空格或换行符?
- c# - 如何使用合约解析器和值提供者在反序列化期间自定义值设置
- image - 图像编号取决于显示图像的分区号
- javascript - 滚动上的动画计数器并非全部加载
- python - 类型错误:此 COM 对象无法自动化 makepy 过程 - 请为此对象手动运行 makepy