在 JavaScript 中将重复项包含在数组元素中

javascriptweb developmentfront end technology

问题

我们需要编写一个 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' ]

相关文章