दिलचस्प पोस्ट
समस्याओं को छवि स्रोत के रूप में सेट किया गया था, जब ओवरराइटिंग (पुनः-बचत) छवि HTML दिनांक इनपुट टैग में दिनांक प्रारूप कैसे सेट करें? जावा में 'सार्वजनिक स्थिर शून्य' का क्या अर्थ है? जावास्क्रिप्ट में कब और क्यों लौट आए? मेरे स्थानीय परिवर्तनों के बारे में गिट पर त्रुटि को कैसे अनदेखा करना मर्ज द्वारा ओवरराइट किया जाएगा? JNI में जावा स्ट्रिंग को आगे और पीछे कैसे पास करें? मैं एक छवि को उसके यूआरएल से एसडी कार्ड में कैसे स्थानांतरित कर सकता हूं? एक स्थैतिक पुस्तकालय को एक साझा पुस्तकालय में कनवर्ट करें? जीसीसी विकल्प को समझने की कोशिश करना- फोमट-फ्रेम-पॉइंटर Android में Google मानचित्र API का उपयोग करके दो स्थानों के बीच वर्तमान स्थान और आस-पास के स्थान और रूट दिखाएं PHP के उपयोग से एसक्यूएल के समान '% search%' सरणी से फ़िल्टर मूल्य पैकेजिंग ईजेबी जावाए 6 युद्ध बनाम ईएआर में सीएसएस चयनकर्ता जो दो वर्गों के तत्वों पर लागू होता है मैं सी # में सामान्य सूची कैसे क्लोन करता हूं? आईफ़ोन डेटा उपयोग ट्रैकिंग / मॉनिटरिंग

जावास्क्रिप्ट (या jquery) में दो-आयामी सरणी (मैट्रिक्स) में सरल सरणी कैसे परिवर्तित करें

कल्पना करो मेरे पास एक सरणी है

A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) 

और मैं इसे 2-आयामी सरणी (एन एक्स एम के मैट्रिक्स) में परिवर्तित करना चाहता हूं, उदाहरण के लिए:

 A = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9)) 

ध्यान दें, मैट्रिक्स की पंक्तियों और स्तंभों को बदल दिया जा सकता है।

Solutions Collecting From Web of "जावास्क्रिप्ट (या jquery) में दो-आयामी सरणी (मैट्रिक्स) में सरल सरणी कैसे परिवर्तित करें"

कुछ इस तरह?

 function listToMatrix(list, elementsPerSubArray) { var matrix = [], i, k; for (i = 0, k = -1; i < list.length; i++) { if (i % elementsPerSubArray === 0) { k++; matrix[k] = []; } matrix[k].push(list[i]); } return matrix; } 

उपयोग:

 var matrix = listToMatrix([1, 2, 3, 4, 4, 5, 6, 7, 8, 9], 3); // result: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

आप एक पंक्ति में ऐसा करने के लिए Array.prototype.reduce फ़ंक्शन का उपयोग कर सकते हैं।

ECMAScript 6 शैली:

 myArr.reduce((rows, key, index) => (index % 3 == 0 ? rows.push([key]) : rows[rows.length-1].push(key)) && rows, []); 

"सामान्य" जावास्क्रिप्ट:

 myArr.reduce(function (rows, key, index) { return (index % 3 == 0 ? rows.push([key]) : rows[rows.length-1].push(key)) && rows; }, []); 

आप 3 को जो भी कॉलम की संख्या चाहते हैं, या बेहतर अभी तक इसे फिर से उपयोग करने योग्य फ़ंक्शन में बदल सकते हैं:

ECMAScript 6 शैली:

 const toMatrix = (arr, width) => arr.reduce((rows, key, index) => (index % width == 0 ? rows.push([key]) : rows[rows.length-1].push(key)) && rows, []); 

"सामान्य" जावास्क्रिप्ट:

 function toMatrix(arr, width) { return arr.reduce(function (rows, key, index) { return (index % width == 0 ? rows.push([key]) : rows[rows.length-1].push(key)) && rows; }, []); } 

कैसे की तरह कुछ के बारे में:

 var matrixify = function(arr, rows, cols) { var matrix = []; if (rows * cols === arr.length) { for(var i = 0; i < arr.length; i+= cols) { matrix.push(arr.slice(i, cols + i)); } } return matrix; }; var a = [0, 1, 2, 3, 4, 5, 6, 7]; matrixify(a, 2, 4); 

http://jsfiddle.net/andrewwhitaker/ERAUs/

बस लूप के लिए दो का उपयोग करें:

 var rowNum = 3; var colNum = 3; var k = 0; var dest = new Array(rowNum); for (i=0; i<rowNum; ++i) { var tmp = new Array(colNum); for (j=0; j<colNum; ++j) { tmp[j] = src[k]; k++; } dest[i] = tmp; } 
 function matrixify( source, count ) { var matrixified = []; var tmp; // iterate through the source array for( var i = 0; i < source.length; i++ ) { // use modulous to make sure you have the correct length. if( i % count == 0 ) { // if tmp exists, push it to the return array if( tmp && tmp.length ) matrixified.push(tmp); // reset the temporary array tmp = []; } // add the current source value to the temp array. tmp.push(source[i]) } // return the result return matrixified; } 

यदि आप वास्तव में किसी सरणी के आंतरिक मूल्यों को बदलना चाहते हैं, तो मेरा मानना ​​है कि आप निम्न कॉल कर सकते हैं:

 source.splice(0, source.length, matrixify(source,3)); 

यह कोड सामान्य और आकार, सरणी के बारे में चिंता करने की कोई ज़रूरत नहीं है, वैश्विक रूप से काम करता है

  function TwoDimensional(arr, size) { var res = []; for(var i=0;i < arr.length;i = i+size) res.push(arr.slice(i,i+size)); return res; } 
  1. खाली सरणी को परिभाषित करना
  2. आकार के अनुसार गड़ें तो हम एक निश्चित खंड प्राप्त करेंगे। यही कारण है कि मैं आकार के साथ मैं बढ़ रहा हूँ, क्योंकि आकार 2,3,4,5,6 हो सकता है ……
  3. यहाँ, पहले मैं i से (i + आकार) टुकड़ा कर रहा हूँ और फिर मैं इसे खाली सरणी के लिए धक्का कर रहा हूँ।
  4. दो-आयामी सरणी लौटें
 function chunkArrToMultiDimArr(arr, size) { var newArray = []; while(arr.length > 0) { newArray.push(arr.slice(0, size)); arr = arr.slice(size); } return newArray; } //example - call function chunkArrToMultiDimArr(["a", "b", "c", "d"], 2); 
 function changeDimension(arr, size) { var arrLen = arr.length; var newArr = []; var count=0; var tempArr = []; for(var i=0; i<arrLen; i++) { count++; tempArr.push(arr[i]); if (count == size || i == arrLen-1) { newArr.push(tempArr); tempArr = []; count = 0; } } return newArr; } changeDimension([0, 1, 2, 3, 4, 5], 4); 

यहां एक भयानक भंडार है

  • एपीआई: मैसफुफा। जेएस

  • नमूना: masfufa.html

उस नमूने के अनुसार, निम्नलिखित स्निपेट इस समस्या को हल करें:

  jsdk.getAPI('my'); var A=[1, 2, 3, 4, 5, 6, 7, 8, 9]; var MX=myAPI.getInstance('masfufa',{data:A,dim:'3x3'}); 

फिर :

 MX.get[0][0] // -> 1 (first) MX.get[2][2] // ->9 (last) 
 function matrixify(array, n, m) { var result = []; for (var i = 0; i < n; i++) { result[i] = array.splice(0, m); } return result; } a = matrixify(a, 3, 3);