আমরা অবজেক্টের একটি অ্যারে পেয়েছি। যদি বস্তুর একটি বৈশিষ্ট্য অন্য বস্তুর মতো একই হয়, তাহলে আমরা এটিকে একটি সদৃশ এন্ট্রি হিসেবে বিবেচনা করি৷
আমরা এই সম্পত্তির দ্বারা বস্তুগুলিকে গোষ্ঠীবদ্ধ করতে চাই এবং কতবার "ডুপ্লিকেট" ঘটেছে সে সম্পর্কে তথ্য সংরক্ষণ করতে চাই৷
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' ] }