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