在 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