如何在 JavaScript 中构建一个没有重复字符的字符串,其中包含 n 个单独的字符列表?
javascriptweb developmentfront end technologyobject oriented programming更新于 2024/1/9 10:52:17
假设,我们有 n 个单独的单个字符数组。我们需要编写一个 JavaScript 函数来接收所有这些数组。
该函数应构建所有可能的字符串,并且 −
包含每个数组中的一个字母
不得包含任何重复字符(因为数组可能包含公共元素)
为了解决这个问题,我们将考虑这三个数组,但我们将编写函数,使其能够很好地处理可变数量的数组 −
const arr1 = [a,b ,c,d ]; const arr2 = [e,f ,g ,a]; const arr3 = [m, n, o, g, k];
示例
其代码为 −
const arr1 = ['a','b' ,'c','d' ];
const arr2 = ['e','f' ,'g' ,'a'];
const arr3 = ['m', 'n', 'o', 'g', 'k'];
const allCombinations = (...arrs) => {
let res = [];
const reduced = arrs.reduce((acc, b) => acc.reduce((r, v) => {
return r.concat(b.map(el => {
return [].concat(v, el);
}))
}, [])
);
res = reduced.filter(el => new Set(el).size === el.length);
return res.map(el => el.join(' '));
};
console.log(allCombinations(arr1, arr2, arr3));
输出
控制台中的输出将是 −
[ 'a e m', 'a e n', 'a e o', 'a e g', 'a e k', 'a f m', 'a f n', 'a f o', 'a f g', 'a f k', 'a g m', 'a g n', 'a g o', 'a g k', 'b e m', 'b e n', 'b e o', 'b e g', 'b e k', 'b f m', 'b f n', 'b f o', 'b f g', 'b f k', 'b g m', 'b g n', 'b g o', 'b g k', 'b a m', 'b a n', 'b a o', 'b a g', 'b a k', 'c e m', 'c e n', 'c e o', 'c e g', 'c e k', 'c f m', 'c f n', 'c f o', 'c f g', 'c f k', 'c g m', 'c g n', 'c g o', 'c g k', 'c a m', 'c a n', 'c a o', 'c a g', 'c a k', 'd e m', 'd e n', 'd e o', 'd e g', 'd e k', 'd f m', 'd f n', 'd f o', 'd f g', 'd f k', 'd g m', 'd g n', 'd g o', 'd g k', 'd a m', 'd a n', 'd a o', 'd a g', 'd a k' ]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

