在 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' ]