सरणी को ऑब्जेक्ट प्रारूप में बदलने के लिए जावास्क्रिप्ट का उपयोग कैसे करें? धन्यवाद!

[ "16-282", "16-311", "16-320", "17-275", "17-276" ]

वस्तु प्रारूप:

[{
    id: 16,
    Options: [282, 311, 320],
  },
  {
     id: 17,
     Options: [275, 276],
  }]

मेरा कोड:

test() {
  var option = ["16-282", "16-311", "16-320", "17-275", "17-276"];


  var finalResult = option.map((item, index) => ({id: item, Options: item,  }));
  console.log(finalResult);
},
0
shuk yi Chan 14 सितंबर 2020, 06:41

2 जवाब

सबसे बढ़िया उत्तर

आप जो चाहते हैं वह आईडी का उपयोग ऑब्जेक्ट कुंजी और मूल्यों के रूप में एक नई वस्तु के रूप में "ग्रुपबी" ऑपरेशन है

ऐरे # कम () और एक मानचित्र का उपयोग करके समाधान

var option = ["16-282", "16-311", "16-320", "17-275", "17-276"];

const group = option.reduce((m, c) => {
  const [id, val] = c.split('-');
  const obj = m.get(id) || { id, options: [] };
  obj.options.push(val);
  return m.set(id, obj)
}, new Map)

console.log([...group.values()])
.as-console-wrapper {
  max-height: 100%!important;
  top: 0
}
0
charlietfl 14 सितंबर 2020, 10:35

आइए अपने कोड से शुरू करें:

var finalResult = option.map((item, index) => ({id: item, Options: item,  }));

यहां आप .map का उपयोग कर रहे हैं। यह पार्स किए गए आउटपुट के साथ n लंबाई की एक सरणी लौटाएगा।


आपके आउटपुट के आधार पर, आपको - से पहले के हिस्से के आधार पर मानों को समूहबद्ध करना होगा। यह कई तरीकों से किया जा सकता है, लेकिन मैं for का उपयोग इसे समझने में आसान के रूप में करूंगा:

विचार:

  • समूह धारण करने के लिए एक वस्तु बनाएँ। ऑब्जेक्ट और ऐरे नहीं क्योंकि ऑब्जेक्ट की-वैल्यू पेयर स्ट्रक्चर हैं। तो आपका समूह आईडी महत्वपूर्ण होगा और मूल्य स्टोर करने का मूल्य होगा।
  • अब option सरणी पर लूप करें। <उल>
  • हर पुनरावृत्ति के लिए, item को हाइफ़न (-) का उपयोग करके विभाजित करें। पहला भाग आपकी कुंजी है और दूसरा आपका मूल्य है।
  • जांचें कि क्या यह कुंजी group में मौजूद है। यदि हाँ, तो वर्तमान मान को Options सरणी में धकेलें।
  • यदि यह मौजूद नहीं है, तो इसे डिफ़ॉल्ट संरचना के साथ प्रारंभ करें: { id: groupKey, Options: [ groupValue ] }

नमूना:

var option = ["16-282", "16-311", "16-320", "17-275", "17-276"];

var groups = {};

for (var i = 0; i< option.length; i++) {
  var parts = option[i].split('-');
  var groupKey = parts[0];
  var groupValue = parts[1];
  
  // Check if the groupKey exists in group
  if (groups[ groupKey ] !== undefined) {
    groups[ groupKey ].Options.push(groupValue)
  } else {
    groups[ groupKey ] = { id: groupKey, Options: [ groupValue ] }
  }
}

console.log(groups)

अब जब आपके पास समूह हैं, तो आपको बस इस ऑब्जेक्ट पर लूप करना होगा और एक सरणी बनाना होगा।

उपरोक्त समूहीकरण विचार और सरणी बनाना इस प्रकार है:

var option = ["16-282", "16-311", "16-320", "17-275", "17-276"];

const groups = option.reduce((acc, item) => {
  const [ id, value ] = item.split('-');
  acc[ id ] = acc[ id ] || { id, Options: [ ]};
  acc[ id ].Options.push(value);
  return acc;
}, {});

const result = Object.values(groups);
console.log(result)
.as-console-wrapper {
  top: 0;
  max-height: 100vh!important;
}
0
Rajesh 14 सितंबर 2020, 10:31