हमें वस्तुओं की एक सरणी मिली है। यदि वस्तु का एक गुण किसी अन्य वस्तु के समान है, तो हम इसे डुप्लिकेट प्रविष्टि मानते हैं।
हम इस संपत्ति के आधार पर वस्तुओं को समूहित करना चाहते हैं और "डुप्लिकेट" कितनी बार हुआ, इस बारे में जानकारी संग्रहीत करना चाहते हैं।
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' ] }