मान लीजिए, हमारे पास इस तरह के स्ट्रिंग शाब्दिकों की एक सरणी है -
const arr = [ "fiat−palio", "fiat−stilo", "fiat−strada", "fiat−uno", "fiat−uno", "gm−corsa", "gm−celta", "ford−fiesta", "volkswagen−gol", "volkswagen−gol", "volkswagen−gol", "volkswagen−voyage" ]
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो स्ट्रिंग्स की एक ऐसी सरणी लेता है। उपरोक्त सरणी में, सभी प्रविष्टियों में एक चीज समान है (सभी एक स्ट्रिंग होने के अलावा), उन सभी में एक स्ट्रिंग जोड़ी है जो डैश ('-') से अलग होती है।
हमारे फ़ंक्शन को एक ऑब्जेक्ट तैयार करना चाहिए जिसमें डैश ('-) से पहले के हिस्से के रूप में कुंजियाँ हों और ऑब्जेक्ट के रूप में उनके मान जिनमें प्रत्येक स्ट्रिंग की गिनती होती है जो वे मूल सरणी के भीतर थे।
इसलिए, उपरोक्त सरणी के लिए, आउटपुट इस तरह दिखना चाहिए -
const output = { "fiat": { "palio": 1, "stilo": 1, "strada": 1, "uno": 2 }, "gm": { "corsa": 1, "celta": 1 }, "ford": { "fiesta": 1 }, "volkswagen": { "gol": 3, "voyage": 1 } };
उदाहरण
इसके लिए कोड होगा -
const arr = [ "fiat−palio", "fiat−stilo", "fiat−strada", "fiat−uno", "fiat−uno", "gm−corsa", "gm−celta", "ford−fiesta", "volkswagen−gol", "volkswagen−gol", "volkswagen−gol", "volkswagen−voyage" ]; const convertToObject = (arr = []) => { let res = arr.reduce((acc, val) => { let pair = val.split('−'); let mark = pair[0]; let model = pair[1]; if(!acc.hasOwnProperty(mark)) { acc[mark] = {}; acc[mark][model] = 1; } else { if(acc[mark].hasOwnProperty(model)) { acc[mark][model] += 1; } else { acc[mark][model] = 1; } } return acc; }, {}) return res; } console.log(convertToObject(arr));
आउटपुट
और कंसोल में आउटपुट होगा -
{ fiat: { palio: 1, stilo: 1, strada: 1, uno: 2 }, gm: { corsa: 1, celta: 1 }, ford: { fiesta: 1 }, volkswagen: { gol: 3, voyage: 1 } }