Computer >> Máy Tính >  >> Lập trình >> Javascript

Commons bao gồm các bản sao trong các phần tử mảng trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng chuỗi, arr, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta phải trả về một mảng gồm tất cả các ký tự hiển thị trong tất cả các chuỗi trong mảng arr (bao gồm cả các bản sao) .

Ví dụ:nếu một ký tự xuất hiện 2 lần trong tất cả các chuỗi mà không phải 3 lần, chúng ta cần đưa ký tự đó 2 lần vào câu trả lời cuối cùng.

Ví dụ:nếu đầu vào của hàm là -

const arr = ['door', 'floor', 'crook'];

Sau đó, đầu ra phải là -

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

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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