JavaScript 分組元素並統計重複項的有效演算法
我們有一個物件陣列。如果一個物件的某個屬性與另一個物件中的屬性相同,我們會認為它是一個重複項。
我們想按此屬性對物件分組,並將有關“重複項”出現次數的資訊儲存起來。
X A B O Y X Z I Y X Z U X A B L Y X Z K
我們想按第一個值分組。
其他兩個屬性在每個重複項中也是相同的,但比較第一個值就足夠了。
我們需要向用戶顯示一個如下所示的結果 −
Y X Z (3) X A B (2)
示例
程式碼如下 −
const arr = [
{x: 'x', acc: 'acc', val: 'val'},
{y: 'y', x: 'x', z: 'z'},
{y: 'y', x: 'x', z: 'z'},
{x: 'x', c: 'c', val: 'val'}
];
const countOccurrence = (arr = []) => {
const res = {};
arr.forEach (item => {
Object.keys( item ).forEach (prop => {
( res[prop] ) ? res[prop] += 1 : res[prop] = 1;
});
});
return res;
}
const groupByOccurrence = (data = []) => {
const obj = countOccurrence(data);
const res = Object.keys ( obj ).reduce ( ( acc, val ) => {
( acc[obj[val]] ) ? acc[obj[val]].push ( val ) : acc[obj[val]] = [val];
return acc;
}, {});
return res;
}
console.log(groupByOccurrence(arr));輸出
And the output in the console will be:
{ '1': [ 'acc', 'c' ], '2': [ 'val', 'y', 'z' ], '4': [ 'x' ] }
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP