मान लीजिए हमारे पास कुछ वर्षों और सप्ताहों के डेटा वाले ऑब्जेक्ट्स का ऐरे है:
const arr = [ {year: 2017, week: 45}, {year: 2017, week: 46}, {year: 2017, week: 47}, {year: 2017, week: 48}, {year: 2017, week: 50}, {year: 2017, week: 52}, {year: 2018, week: 1}, {year: 2018, week: 2}, {year: 2018, week: 5} ];हमें एक जावास्क्रिप्ट फंक्शन लिखना है जो ऐसा ऐरे ले। फंक्शन को एक नया ऐरे वापस करना चाहिए जहां "year" प्रॉपर्टी के लिए समान मान वाले सभी ऑब्जेक्ट्स एक अलग ऑब्जेक्ट में ग्रुप हों।
इसलिए, उपरोक्त ऐरे के लिए आउटपुट ऑब्जेक्ट ऐसा दिखना चाहिए:
[ { 2017 : [{ week: 45, week: 46, week: 47, week: 48, week: 50, week: 53 }, { 2018 : [{ week: 1, week: 2, week: 5 }] ]उदाहरण
इसके लिए कोड:
const arr = [ {year: 2017, week: 45}, {year: 2017, week: 46}, {year: 2017, week: 47}, {year: 2017, week: 48}, {year: 2017, week: 50}, {year: 2017, week: 52}, {year: 2018, week: 1}, {year: 2018, week: 2}, {year: 2018, week: 5} ]; const groupByYear = arr => { const res = []; const map = {}; arr.forEach(item => { const temp = {}; if (!map[item.year]) { map[item.year] = []; temp[item.year] = map[item.year]; res.push(temp); }; map[item.year].push({ value: item.week }); }); return res; }; console.log(JSON.stringify(groupByYear(arr), undefined, 4));आउटपुट
कंसोल में आउटपुट:
[ { "2017": [ { "value": 45 }, { "value": 46 }, { "value": 47 }, { "value": 48 }, { "value": 50 }, { "value": 52 } ] }, { "2018": [ { "value": 1 }, { "value": 2 }, { "value": 5 } ] } ]