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

JavaScript에서 배열 요소의 중복을 포함한 공통

<시간/>

문제

첫 번째이자 유일한 인수로 문자열 배열 arr을 취하는 JavaScript 함수를 작성해야 합니다.

우리의 함수는 arr (중복 포함) 배열 내의 모든 문자열에 나타나는 모든 문자의 배열을 반환해야 합니다. .

예를 들어, 문자가 모든 문자열에서 2번 발생하지만 3번이 아닌 경우 최종 답변에 해당 문자를 2번 포함해야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
const arr = ['door', 'floor', 'crook'];

그러면 출력은 다음과 같아야 합니다. -

const output = ['r', 'o', 'o'];

예시

이에 대한 코드는 -

const arr = ['door', 'floor', 'crook'];
const findCommon = (arr = []) => {
   let prev = null;
   arr.forEach((str) => {
      const next = {};
      for(const val of str){
         if(!prev){
            next[val] = (next[val] || 0) + 1;
         }else if(prev[val]){
            prev[val] -= 1;
            next[val] = (next[val] || 0) + 1;
         };
      };
      prev = next;
   });
   const res = Object.keys(prev).reduce((acc, val) => {
      for(let i = 0; i < prev[val]; i++){
         acc.push(val);
      }
      return acc
   }, []);
   return res;
};
console.log(findCommon(arr));

출력

콘솔의 출력은 -

[ 'r', 'o', 'o' ]