在 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.