मेरे पास एक वस्तु है कि मैं एक लूप का उपयोग करके अन्य वस्तुओं की अनिश्चित मात्रा को धक्का देना चाहता हूं। इसे व्यवस्थित रखने के लिए, मैं लूप के चलने की मात्रा के आधार पर चाबियों को गतिशील रूप से नाम देना चाहता हूं। मेरे पास निम्नलिखित है:

let formsJson = {};
let counter = 1;

//savedForms are where the objects that I want to push reside
savedForms.forEach( form => {
  formsJson['form'+counter] = JSON.parse(form.firstDataBit_json);

  //This is where I'm having trouble

  counter = counter + 1;
});

मैं डेटा के पहले बिट को ठीक कर सकता हूं, और कुंजी को गतिशील रूप से भी नाम दे सकता हूं। लेकिन मुझे इसी गतिशील कुंजी पर 2 और वस्तुओं को धक्का देना होगा, और यही वह जगह है जहां मुझे परेशानी हो रही है। अगर मैं स्पष्ट कोशिश करता हूं और करता हूं:

formsJson['form'+counter].push(JSON.parse(form.secondDataBit_JSON));

मुझे कोई आउटपुट नहीं मिलता है। क्या इसको मदद देने का कोई तरीका है?

1
Jensen010 17 अक्टूबर 2018, 19:43

3 जवाब

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

ForEach() आपको पहले से ही इंडेक्स तक पहुंच प्रदान करता है। counter वैरिएबल बनाने की जरूरत नहीं है। उदाहरण उपयोग। मैं निश्चित रूप से एक साधारण अनुक्रमणिका का उपयोग करने की सलाह दूंगा, और 'form'+counter कुंजी का उपयोग न करने की।

आपके उदाहरण में, मुझे यह स्पष्ट नहीं है कि प्रत्येक लूप में असाइन किया जा रहा मान एक सरणी है। तो यह स्पष्ट नहीं है कि आप उसमें किसी दिए गए तत्व को push कर सकते हैं। लेकिन आम तौर पर उस वाक्यविन्यास को

व्यक्तिगत रूप से, मैं एक ऐसा फ़ंक्शन रखना पसंद करूंगा जो तत्व के संपूर्ण मान को आउटपुट करे। यह बेहतर एनकैप्सुलेशन, टेस्टेबिलिटी प्रदान करेगा और डिफ़ॉल्ट मानों को लागू करने में मदद करेगा। कुछ इस तरह:

function createItem(param1) { 
  let item = [];
  item.push(param1.someElement);
  if (foo) {
    item.push(...);
  } else {
    item.push(...);
  }
  return item;
}

formsJson['form'+counter] = createItem( JSON.parse(form) )
1
Brian Wagner 17 अक्टूबर 2018, 17:23

तो आप JSON पार्स निर्दिष्ट करके formsJson['form'+counter] बना रहे हैं, न कि एक सरणी जैसा आप चाहते हैं। ये कोशिश करें:

formsJson['form'+counter] = [];
formsJson['form'+counter].push(JSON.parse(form.firstDataBit_json));
formsJson['form'+counter].push(JSON.parse(form.secondDataBit_JSON));
0
Edward Lynch 17 अक्टूबर 2018, 16:51

शायद आप कुछ इस तरह का पता लगाना चाहते हैं

savedforms.forEach((form, index)  => 
 formsJson[`form${index + 1}`] = [ JSON.parse(form.secondDataBit_JSON)]) 

अब आप आइटम पर पुश कर सकते हैं

formsJson[`form${index + 1}`].push(JSON.parse(form.secondDataBit_JSON));`

साथ ही यहां आप ऑपरेशन को बढ़ाने पर सेव करेंगे यह अपने आप हो जाएगा

0
Jensen010 17 अक्टूबर 2018, 23:36