दिलचस्प पोस्ट
क्यू में UTF-16 को UTF-8 विंडोज और लिनक्स के तहत परिवर्तित करें समूह द्वारा खंड के साथ एसक्यूएल अल्पविराम से अलग की गई पंक्ति आलसी एंड्रॉइड (शुरुआती स्तर) में सूची दृश्य पर छवि लोड करें? आधार64 में ब्लॉब कन्वर्ट करें Xcode समर्थन ब्लूटूथ कम ऊर्जा में iPhone सिम्युलेटर क्या है? किसी ऑब्जेक्ट के गुण (स्ट्रिंग) में सी # नोड.जेएस मॉड्यूल और फ़ंक्शन में "यह" का अर्थ "विकल्प = विकल्प क्या है?" {} "जावास्क्रिप्ट में क्या मतलब है? आभासी कार्यों के बिना एक अंतरफलक उत्पन्न? क्या मैटलॉग के डेटर्सर्समोड के एक मैटलप्लिब समकक्ष है? Sys.stdout.write और प्रिंट के बीच का अंतर? सी # में एक विंडोज सर्विस प्रोग्राम को कैसे स्थापित करें? स्थिति पूर्ण और अतिप्रवाह छिपा हुआ आप जेएसपी में क्लासेस कैसे आयात करते हैं? डेटा को जोड़ने में एक में 2 एक्सेल तालिकाओं का मिश्रण है?

जावास्क्रिप्ट में मल्टी-आयामी एसोसिएटिव एरेज़

निम्नलिखित क्वेरी परिणाम हैं: (key1 और key2 कोई भी पाठ हो सकता है)

id key1 key2 value 1 fred apple 2 2 mary orange 10 3 fred banana 7 4 fred orange 4 5 sarah melon 5 ... 

और मैं ग्रिड में डेटा संग्रहीत करना चाहते हैं (संभवतः एक सरणी के रूप में) इस तरह के सभी अभिलेखों को पाशन करना :

  apple orange banana melon fred 2 4 7 - mary - 10 - - sarah - - - 5 

PHP में यह साहचर्य सरणियों का उपयोग करना वास्तव में आसान होगा:

 $result['fred']['apple'] = 2; 

लेकिन जावास्क्रिप्ट सहयोगी सरणियों में ऐसा काम नहीं करता है। ट्यूटोरियल के टन पढ़ने के बाद, मैं यह सब प्राप्त कर सकता था:

 arr=[]; arr[1]['apple'] = 2; 

लेकिन arr['fred']['apple'] = 2; काम नहीं करता है मैंने वस्तुओं के सरणियों की कोशिश की, लेकिन ऑब्जेक्ट गुण मुक्त पाठ नहीं हो सकते जितना अधिक मैं ट्यूटोरियल पढ़ रहा था, उतना ही मैं उलझन में था …

किसी भी विचार का स्वागत है 🙂

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में मल्टी-आयामी एसोसिएटिव एरेज़"

बस एक नियमित जावास्क्रिप्ट ऑब्जेक्ट का उपयोग करें, जो आपके एसोसिएटिव एरेज़ के समान ही 'पढ़ा' होगा। आपको उन्हें पहले भी आरंभ करना याद रखना होगा।

 var obj = {}; obj['fred'] = {}; if('fred' in obj ){ } // can check for the presence of 'fred' if(obj.fred) { } // also checks for presence of 'fred' if(obj['fred']) { } // also checks for presence of 'fred' // The following statements would all work obj['fred']['apples'] = 1; obj.fred.apples = 1; obj['fred'].apples = 1; // or build or initialize the structure outright var obj = { fred: { apples: 1, oranges: 2 }, alice: { lemons: 1 } }; 

यदि आप मूल्यों को देख रहे हैं, तो आपके पास ऐसा कुछ हो सकता है जो इस तरह दिखता है:

 var people = ['fred', 'alice']; var fruit = ['apples', 'lemons']; var grid = {}; for(var i = 0; i < people.length; i++){ var name = people[i]; if(name in grid == false){ grid[name] = {}; // must initialize the sub-object, otherwise will get 'undefined' errors } for(var j = 0; j < fruit.length; j++){ var fruitName = fruit[j]; grid[name][fruitName] = 0; } } 

यदि यह एक सरणी नहीं है, तो आप "बहुआयामी" जेएस ऑब्जेक्ट बना सकते हैं …

 <script type="text/javascript"> var myObj = { fred: { apples: 2, oranges: 4, bananas: 7, melons: 0 }, mary: { apples: 0, oranges: 10, bananas: 0, melons: 0 }, sarah: { apples: 0, oranges: 0, bananas: 0, melons: 5 } } document.write( myObject[ 'fred' ][ 'apples' ] ); </script> 

जावास्क्रिप्ट लचीला है:

 var arr = { "fred": {"apple": 2, "orange": 4}, "mary": {} //etc, etc }; alert(arr.fred.orange); alert(arr["fred"]["orange"]); for (key in arr.fred) alert(key + ": " + arr.fred[key]); 

जैसा कि मुझे सभी तत्वों को एक अच्छे तरीके से प्राप्त करने की ज़रूरत थी, इसलिए मैंने इस SO विषय का सामना किया। 2 आयामी एसोसिएटेटिव सरणी / ऑब्जेक्ट का ट्रैवर्स करना – मेरे लिए कोई फर्क नहीं पड़ता, क्योंकि फ़ंक्शनफ़ाइलेंस गिना जाता है

  var imgs_pl= {'offer':{'img':'wer-handwritter_03.png','left': 1,'top': 2 }, 'portfolio':{'img':'wer-handwritter_10.png','left': 1,'top': 2 }, 'special':{'img':'wer-handwritter_15.png','left': 1,'top': 2 } }; for (key in imgs_pl){ console.log(key); for (subkey in imgs_pl[key]){ console.log(imgs_pl[key][subkey]); }//for }//for 

किसी सरणी का उपयोग न करें, ऑब्जेक्ट का उपयोग करें

  var foo = new Object(); 

संपत्ति नाम एक पूर्णांक है जब साहचर्य arrays संपत्ति की एक सरणी के लिए मूल्य प्राप्त करें:

एक एसोसिएटिव अर्रे के साथ शुरू करना जहां संपत्ति नाम पूर्णांक हैं:

 var categories = [ {"1":"Category 1"}, {"2":"Category 2"}, {"3":"Category 3"}, {"4":"Category 4"} ]; 

सरणी को आइटम पुश करें:

 categories.push({"2300": "Category 2300"}); categories.push({"2301": "Category 2301"}); 

सरणी के माध्यम से लूप और संपत्ति मूल्य के साथ कुछ करो।

 for (var i = 0; i < categories.length; i++) { for (var categoryid in categories[i]) { var category = categories[i][categoryid]; // log progress to the console console.log(categoryid + " : " + category); // ... do something } } 

कंसोल आउटपुट इस तरह दिखना चाहिए:

 1 : Category 1 2 : Category 2 3 : Category 3 4 : Category 4 2300 : Category 2300 2301 : Category 2301 

जैसा कि आप देख सकते हैं, आप एसोसिएटिव सरणी सीमा के आसपास प्राप्त कर सकते हैं और एक गुण नाम एक पूर्णांक हो सकता है।

नोट: मेरे उदाहरण में एसोसिएटेटिव सरणी जेएसएसन है यदि आप एक शब्दकोश [] ऑब्जेक्ट को सीरियल कर सकते हैं।

ऐसा प्रतीत होता है कि कुछ अनुप्रयोगों के लिए, जावास्क्रिप्ट में बहु आयामी साहचर्य सरणियों के लिए एक बहुत सरल दृष्टिकोण है।

1) यह देखते हुए कि सभी सरणियों का आंतरिक प्रतिनिधित्व वास्तव में वस्तुओं की वस्तुओं के रूप में है, यह दिखाया गया है कि संख्यात्मक रूप से अनुक्रमित तत्वों के लिए पहुंच समय वास्तव में सहायक (पाठ) अनुक्रमित तत्वों के समान है

2) प्रथम-स्तरीय एसोसिएटिव अनुक्रमित तत्वों के लिए पहुंच का समय वास्तविक तत्वों की संख्या बढ़ने से नहीं बढ़ता है।

यह देखते हुए, कई मामलों में हो सकता है, जहां बहुसंख्यक तत्वों की तुल्यता पैदा करने के लिए एक सम्मिलित स्ट्रिंग दृष्टिकोण का उपयोग करना वास्तव में बेहतर है। उदाहरण के लिए:

 store['fruit']['apples']['granny']['price] = 10 store['cereal']['natural']['oats']['quack'] = 20 

जाता है:

 store['fruit.apples.granny.price'] = 10 store['cereal.natural.oats.quack'] = 20 

फायदे में शामिल हैं:

  • सब-ऑब्जेक्ट्स को इनिशियलाइज़ करने की आवश्यकता नहीं है या ऑब्जेक्ट को सर्वश्रेष्ठ संयोजन कैसे करें
  • एकल-स्तरीय पहुंच का समय ऑब्जेक्ट्स के भीतर ऑब्जेक्ट्स एन बार एक्सेस टाइम की आवश्यकता होती है
  • ऑब्जेक्ट.कीज़ () का उपयोग सभी आयाम सूचनाओं को निकालने के लिए कर सकते हैं ..
  • फ़ंक्शन regex.test (स्ट्रिंग) और कुंजी को array.map फ़ंक्शन का उपयोग कर सकते हैं ताकि आप वास्तव में क्या चाहते हो।
  • आयामों में कोई पदानुक्रम नहीं है
  • "डॉट" मनमाना है – अंडरस्कोर का उपयोग करके वास्तव में रीजेक्स आसान होता है
  • साथ ही इस प्रारूप में "सपाट" जेएसओएन में और बाहर के लिए बहुत सारी स्क्रिप्ट्स हैं
  • Keylist पर अन्य सभी अच्छे सरणी प्रसंस्करण फ़ंक्शन का उपयोग कर सकते हैं
 <script language="javascript"> // Set values to variable var sectionName = "TestSection"; var fileMap = "fileMapData"; var fileId = "foobar"; var fileValue= "foobar.png"; var fileId2 = "barfoo"; var fileValue2= "barfoo.jpg"; // Create top-level image object var images = {}; // Create second-level object in images object with // the name of sectionName value images[sectionName] = {}; // Create a third level object var fileMapObj = {}; // Add the third level object to the second level object images[sectionName][fileMap] = fileMapObj; // Add forth level associate array key and value data images[sectionName][fileMap][fileId] = fileValue; images[sectionName][fileMap][fileId2] = fileValue2; // All variables alert ("Example 1 Value: " + images[sectionName][fileMap][fileId]); // All keys with dots alert ("Example 2 Value: " + images.TestSection.fileMapData.foobar); // Mixed with a different final key alert ("Example 3 Value: " + images[sectionName]['fileMapData'][fileId2]); // Mixed brackets and dots... alert ("Example 4 Value: " + images[sectionName]['fileMapData'].barfoo); // This will FAIL! variable names must be in brackets! alert ("Example 5 Value: " + images[sectionName]['fileMapData'].fileId2); // Produces: "Example 5 Value: undefined". // This will NOT work either. Values must be quoted in brackets. alert ("Example 6 Value: " + images[sectionName][fileMapData].barfoo); // Throws and exception and stops execution with error: fileMapData is not defined // We never get here because of the uncaught exception above... alert ("The End!"); </script> 

आपको ऑब्जेक्ट का उपयोग करने की आवश्यकता नहीं है, आप इसे सामान्य बहु-आयामी एरेज़ के साथ कर सकते हैं।

यह ऑब्जेक्ट्स के बिना मेरा समाधान है:

 // Javascript const matrix = []; matrix.key1 = [ 'value1', 'value2', ]; matrix.key2 = [ 'value3', ]; 

जो PHP में समतुल्य है:

 // PHP $matrix = [ "key1" => [ 'value1', 'value2', ], "key2" => [ 'value3', ] ];