Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

반복되는 문자 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'
]