gpt4 book ai didi

javascript - 以某种方式(从右到左)合并,展平和连接javascript中的多个多维数组的任何简单方法?

转载 作者:行者123 更新时间:2023-11-30 09:35:52 25 4
gpt4 key购买 nike

我需要一种简单的方法以某种方式(从右到左)在 javascript 中合并、扁平化和连接多个多维数组

# Exemple
[['.class1', '.class2'], ['.class3', ['.class4', '.class5', ...], ['.class6'], ...]]
# OR
[['.class1', '.class2'], ['.class3', ['.class4', '.class5', ...]], ['.class6'], ...]

# Would become
['.class1.class3.class4.class6', '.class1.class3.class5.class6', '.class2.class3.class4.class6', '.class2.class3.class5.class6', ...]

我从 underscore.js 库中找到了 reduceRight 函数,但我不确定如何轻松实现它,因为它需要递归完成。

最佳答案

您可以使用迭代和递归方法处理可变长度的部分 Array#forEach .

此版本现在可以使用嵌套数组并在高级中将其扁平化。

function combine(array) {
function c(part, index) {
var temp = array[index];

if (Array.isArray(temp) && temp.some(function (a) { return Array.isArray(a); })) {
temp = combine(array[index].map(function (a) { return Array.isArray(a) ? a : [a]; }));
}
temp.forEach(function (a) {
var p = part.concat(a);
if (p.length === array.length) {
r.push(p.join(''));
return;
}
c(p, index + 1);
});
}

var r = [];

c([], 0);
return r;
}

var array = [
['.class1', '.class2'],
['.class3',
['.class4', '.class5'],
['.class6']
]
],
result = combine(array);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 以某种方式(从右到左)合并,展平和连接javascript中的多个多维数组的任何简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com