在 JavaScript 中,包括陣列元素中重複項的公共點


問題

我們需要編寫一個 JavaScript 函式,該函式以一個字串陣列 arr 作為第一個也是唯一的引數。

我們的函式應該返回一個數組,其中包含在 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' ]

更新於: 09-Apr-2021

72 次瀏覽

開啟你的事業

完成課程並獲得認證

立即開始
廣告
© . All rights reserved.