在 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' ]
广告
数据结构
联网
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP