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

Tìm mục chung giữa số mảng tùy ý trong JavaScript

Giả sử, chúng ta có một đối tượng gồm các mảng Số như thế này -

const obj = {
   a: [ 15, 23, 36, 49, 104, 211 ],
   b: [ 9, 12, 23 ],
   c: [ 11, 17, 18, 23, 38 ],
   d: [ 13, 21, 23, 27, 40, 85]
};

Số lượng phần tử trong đối tượng không cố định và nó có thể có bất kỳ số phần tử tùy ý nào.

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một đối tượng như vậy và trả về một mảng các phần tử chung cho mỗi mảng thành viên.

Do đó, đối với đối tượng trên, kết quả đầu ra phải là -

const output = [23];

Ví dụ

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

const obj = {
   a: [ 15, 23, 36, 49, 104, 211 ],
   b: [ 9, 12, 23 ],
   c: [ 11, 17, 18, 23, 38 ],
   d: [ 13, 21, 23, 27, 40, 85]
};
const commonBetweenTwo = (arr1, arr2) => {
   const res = [];
   for(let i = 0; i < arr1.length; i++){
      if(arr2.includes(arr1[i])){
         res.push(arr1[i]);
      };
   };
   return res;
};
const commonBetweenMany = (obj = {}) => {
   const keys = Object.keys(obj);
   let res = obj[keys[0]];
   for(let i = 1; i < keys.length - 1; i++){
      res = commonBetweenTwo(res, obj[keys[i]]);
      if(!res.length){
         return [];
      };
   };
   return res;
};
console.log(commonBetweenMany(obj));

Đầu ra

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

[23]