বহুমাত্রিক অ্যারে কীভাবে তৈরি করবেন


148

ইনপুটগুলির বহুমাত্রিক অ্যারে সহ যে কেউ আমাকে জাভাস্ক্রিপ্টের নমুনা / উদাহরণ দিতে পারেন? আশা করি আপনি সহায়তা করতে পারবেন কারণ আমি এখনও জাভাস্ক্রিপ্টে নতুন।

আপনি যখন 2 সারি এবং 2 টি কলাম ইনপুট করবেন তখন এর আউটপুট 2 সারি ইনপুট এবং ইনপুটটির 2 কলাম হবে।

এটার মত:

[input][input]                
[input][input]

2
'ইনপুটস' বলতে কী বোঝ? একটি <input>উপাদান বা কিছু পরিবর্তনশীল?
pimvdb

1
হ্যাঁ স্যার .. একটি <ইনপুট টাইপ = "পাঠ্য">
স্পিটফায়ার

যারা স্বেচ্ছাসেবী আকার এবং সংখ্যা মাত্রা সহ বহুমাত্রিক অ্যারে করতে খুঁজছেন তাদের জন্য এই উত্তরটি দেখুন
পিম্প ট্রাইস্কিট

উত্তর:


318
var numeric = [
    ['input1','input2'],
    ['input3','input4']
];
numeric[0][0] == 'input1';
numeric[0][1] == 'input2';
numeric[1][0] == 'input3';
numeric[1][1] == 'input4';

var obj = {
    'row1' : {
        'key1' : 'input1',
        'key2' : 'input2'
    },
    'row2' : {
        'key3' : 'input3',
        'key4' : 'input4'
    }
};
obj.row1.key1 == 'input1';
obj.row1.key2 == 'input2';
obj.row2.key1 == 'input3';
obj.row2.key2 == 'input4';

var mixed = {
    'row1' : ['input1', 'inpu2'],
    'row2' : ['input3', 'input4']
};
mixed.row1[0] == 'input1';
mixed.row1[1] == 'input2';
mixed.row2[0] == 'input3';
mixed.row2[1] == 'input4';

http://jsfiddle.net/z4Un3/

এবং আপনি যদি ডিওএম উপাদানগুলি সঞ্চয় করতে চান:

var inputs = [
    [
        document.createElement('input'),
        document.createElement('input')
    ],
    [
        document.createElement('input'),
        document.createElement('input')
    ]
];
inputs[0][0].id = 'input1';
inputs[0][1].id = 'input2';
inputs[1][0].id = 'input3';
inputs[1][1].id = 'input4';

আপনি উপাদানগুলিকে সংযুক্ত না করা পর্যন্ত উপরের দিক থেকে কতটা কার্যকর তা নিশ্চিত নয়। নীচে আপনি যা খুঁজছেন তা আরও হতে পারে:

<input text="text" id="input5"/>
<input text="text" id="input6"/>
<input text="text" id="input7"/>
<input text="text" id="input8"/>    
var els = [
    [
        document.getElementById('input5'),
        document.getElementById('input6')
    ],
    [
        document.getElementById('input7'),
        document.getElementById('input8')
    ]
];    
els[0][0].id = 'input5';
els[0][1].id = 'input6';
els[1][0].id = 'input7';
els[1][1].id = 'input8';

http://jsfiddle.net/z4Un3/3/

বা, সম্ভবত এটি:

<input text="text" value="4" id="input5"/>
<input text="text" value="4" id="input6"/>
<br/>
<input text="text" value="2" id="input7"/>
<input text="text" value="4" id="input8"/>

var els = [
    [
        document.getElementById('input5'),
        document.getElementById('input6')
    ],
    [
        document.getElementById('input7'),
        document.getElementById('input8')
    ]
];

var result = [];

for (var i = 0; i < els.length; i++) {
    result[result.length] = els[0][i].value - els[1][i].value;
}

যা দেয়:

[2, 0]

কনসোলে আপনি পাঠ্য যে আউটপুট চান, আপনি করতে পারেন result.join(' ');, যা আপনি দিতে হবে 2 0

http://jsfiddle.net/z4Un3/6/

সম্পাদনা

এবং একটি কার্যনির্বাহী বিক্ষোভ:

<input text="text" value="4" id="input5"/>
<input text="text" value="4" id="input6"/>
<br/>
<input text="text" value="2" id="input7"/>
<input text="text" value="4" id="input8"/>
<br/>
<input type="button" value="Add" onclick="add()"/>

// This would just go in a script block in the head
function add() {
    var els = [
        [
            document.getElementById('input5'),
            document.getElementById('input6')
        ],
        [
            document.getElementById('input7'),
            document.getElementById('input8')
        ]
    ];

    var result = [];

    for (var i = 0; i < els.length; i++) {
        result[result.length] = parseInt(els[0][i].value) - parseInt(els[1][i].value);
    }

    alert(result.join(' '));
}

http://jsfiddle.net/z4Un3/8/


1
আমি কীভাবে জানতে পারি কীভাবে এই কাজ স্যার .. আমি জাভাস্ক্রিপ্টের বিভ্রান্তি করছি
স্পিটফায়ার

1
এটা কি সম্পর্কে আপনি বিভ্রান্ত?
জারেড ফারিশ

আমি কি এইচটিএমএল ফাইল তৈরি করতে যাচ্ছি যেখানে দুটি ইনপুট রয়েছে এবং এটি সারি এবং কলামের ইনপুট বা অন্য কিছু?
স্পিটফায়ার

1
আমি যা বলছি তা সত্যিই অনুসরণ করছি না। আপনি আপনার অ্যারের সাথে কী চেষ্টা করছেন? (এছাড়াও, আমার শেষ সম্পাদনাটি দেখুন))
জারেড ফারিশ

অ্যারেতে আমি একটি অনন্য নাম বা আইডি সহ কয়েকটি সারি এবং কলামগুলিকে ইনপুট দিতে চলেছি ... এবং অন্য সারি এবং কলামগুলিতে একটি অনন্য নাম বা আইডি রয়েছে যেখানে ইনপুট সারি এবং কলামগুলির প্রথম অ্যারে আর এর দ্বিতীয় ইনপুটগুলিতে বিয়োগ করা হবে এবং সি ..
স্পিটফায়ার

28

জাভা স্ক্রিপ্ট সহ ডেটা স্ট্রাকচার এবং অ্যালগরিদম থেকে নেওয়া উদ্ধৃতি

গুড পার্টস (ও'রেলি, পৃষ্ঠা 64) ক্রকফোর্ড জাভাস্ক্রিপ্ট অ্যারে অবজেক্টটিকে এমন একটি ফাংশন দিয়ে প্রসারিত করে যা সারি এবং কলামগুলির সংখ্যা নির্ধারণ করে এবং প্রতিটি মানকে ফাংশনে পাস হওয়া মানকে সেট করে। এখানে তার সংজ্ঞা:

Array.matrix = function(numrows, numcols, initial) {
    var arr = [];
    for (var i = 0; i < numrows; ++i) {
        var columns = [];
        for (var j = 0; j < numcols; ++j) {
            columns[j] = initial;
        }
        arr[i] = columns;
    }
    return arr;
}

সংজ্ঞাটি পরীক্ষা করার জন্য এখানে কিছু কোড দেওয়া হয়েছে:

var nums = Array.matrix(5,5,0);
print(nums[1][1]); // displays 0
var names = Array.matrix(3,3,"");
names[1][2] = "Joe";
print(names[1][2]); // display "Joe"

আমরা একটি দ্বি-মাত্রিক অ্যারেও তৈরি করতে পারি এবং এটিকে এক লাইনে মানের সেট করতে শুরু করতে পারি:

var grades = [[89, 77, 78],[76, 82, 81],[91, 94, 89]];
print(grades[2][2]); // displays 89

15

মান অ্যাসাইনমেন্ট ছাড়াই ঘোষণা করা হয়েছে।

2 মাত্রা ...

var arrayName = new Array(new Array());

3 মাত্রা ...

var arrayName = new Array(new Array(new Array()));

8
এই দুটি উদাহরণই কেবল 1x1 এবং 1x1x1 অ্যারে তৈরি করেছে বলে মনে হচ্ছে (যথাক্রমে), সম্ভবত সঠিকভাবে একক মাত্রা নেস্টেড অ্যারে বলা হয়। var test=new Array(new Array());test[0][0]='1';test[0][1]='2';test[1][0]='3';বার্তায় উদাহরণস্বরূপ ত্রুটিException: test[1] is undefined
ব্যবহারকারী 66001

2
এটা ভুল মনে হচ্ছে। যখন আমি কোডটি চেষ্টা করি তখন আমি 1x1x0 অ্যারে পাই। jsfiddle.net/zU8SB/1 এটি 13 টি আপগেট কীভাবে পেয়েছে?
র্যান্ডল কুক


12

আমি জানি এটি প্রাচীন তবে কী সম্পর্কে ...

4x4 উদাহরণ (actually 4x<anything>):

var matrix = [ [],[],[],[] ]

যা পূরণ করতে পারে:

for (var i=0; i<4; i++) {
   for (var j=0; j<4; j++) {
      matrix[i][j] = i*j;
   }
}

সম্ভবত এটি আরও স্পষ্ট করে তুলতে পারে যে 1x4 এর বাইরে "ম্যাট্রিক্স [3] [3] 4 র্থ সারিতে নয়, 4 র্থ কলাম নয়) এই ঘোষণার সাথে ঘোষিত নয় (যেমন, অ্যাক্সেসযোগ্য)। এছাড়াও, উদাহরণস্বরূপ উপাদানটি [0] [1] থেকে 5 টি প্রথম উপাদানটি এড়িয়ে যায়। পরিবর্তে [0] [0] ব্যবহার করে প্রচুর প্রোগ্রামিং ভাষায় অ্যারেগুলির একটি গুরুত্বপূর্ণ পয়েন্টটি প্রদর্শন করতে কার্যকর হতে পারে।
ব্যবহারকারী 66001

9

খুব সহজ

var states = [,];
states[0,0] = tName; 
states[0,1] = '1';
states[1,0] = tName; 
states[2,1] = '1';

। । ।

states[n,0] = tName; 
states[n,1] = '1';

কনসোলে এটি পরীক্ষা করার পরে এটি কাজ করবে বলে মনে হয় না। দেখে মনে হচ্ছে পুরানো মানগুলি মুছে ফেলা হবে যখন আমি একটি [0,1] এবং একটি [1,1] বলতে লিখি, দ্বিতীয়টি একটি [0,1] মুছে দেয় ...
টমাস ডিগানান

8
function Array2D(x, y)
{
    var array2D = new Array(x);

    for(var i = 0; i < array2D.length; i++)
    {
        array2D[i] = new Array(y);
    }

    return array2D;
}

var myNewArray = Array2D(4, 9);

myNewArray[3][5] = "booger";

7

আশা করি নীচের কোডটি আপনার প্রয়োজনীয়তার সাথে স্যুট করবে

var row= 20;
var column= 10;
var f = new Array();

for (i=0;i<row;i++) {
 f[i]=new Array();
 for (j=0;j<column;j++) {
  f[i][j]=0;
 }
}

হ্যাঁ!! চিরদিনের জন্য এই লড়াই করা হয়েছে! গোপনীয়তাটি সারি কলামে অতিরিক্ত অ্যারে তৈরি করছে (বা যদি গ্রিডের মধ্য দিয়ে পুনরাবৃত্তি হয় তবে উচ্চতা)
NiCk Newman

4
var size = 0;   
 var darray = new Array();
    function createTable(){
        darray[size] = new Array();
        darray[size][0] = $("#chqdate").val();
        darray[size][1]= $("#chqNo").val();
        darray[size][2] = $("#chqNarration").val() ;
        darray[size][3]= $("#chqAmount").val();
        darray[size][4]= $("#chqMode").val();
    }

আপনার ফাংশনের পরে আকার বাড়ান।


3

সুতরাং এখানে আমার সমাধান।

একটি 3x3 অ্যারের জন্য একটি সাধারণ উদাহরণ। আরও গভীর হওয়ার জন্য আপনি এই শৃঙ্খলা চালিয়ে যেতে পারেন

Array(3).fill().map(a => Array(3))

অথবা নীচের ফাংশনটি আপনার পছন্দ মতো কোনও স্তর তৈরি করবে

f = arr => {
    let str = 'return ', l = arr.length;
    arr.forEach((v, i) => {
        str += i < l-1 ? `Array(${v}).fill().map(a => ` : `Array(${v}` + ')'.repeat(l);
    });
    return Function(str)();
}
f([4,5,6]) // Generates a 4x5x6 Array

http://www.binaryoverdose.com/2017/02/07/Generating-Multidimensional-Arrays-in-JavaScript/


2

আপনি নীচে কোড অনুসরণ করে অ্যারে তৈরি করতে পারেন:

var arraymultidimensional = []
    arraymultidimensional = [[value1,value2],[value3,value4],[value5,value6]];

ফলাফল:
[v1] [v2] অবস্থান 0
[v3] [v4] অবস্থান 1
[v5] [v6] অবস্থান 2

দিনব্যাপী অ্যারে যুক্ত করার জন্য, নীচের পদ্ধতিটি ব্যবহার করুন:

//vectorvalue format = "[value,value,...]"
function addToArray(vectorvalue){
  arraymultidimensional[arraymultidimensional.length] = vectorvalue;
}

আশাকরি এটা সাহায্য করবে. :)


1

কিছু যুক্ত নমনীয়তার সাথে এটি করার জন্য আমি একটি এনপিএম মডিউল তৈরি করেছি :

// create a 3x3 array
var twodimensional = new MultiDimensional([3, 3])

// create a 3x3x4 array
var threedimensional = new MultiDimensional([3, 3, 4])

// create a 4x3x4x2 array
var fourdimensional = new MultiDimensional([4, 3, 4, 2])

// etc...

আপনি যে কোনও মান দিয়ে অবস্থানগুলি শুরু করতে পারেন:

// create a 3x4 array with all positions set to 0
var twodimensional = new MultiDimensional([3, 4], 0)

// create a 3x3x4 array with all positions set to 'Default String'
var threedimensionalAsStrings = new MultiDimensional([3, 3, 4], 'Default String')

বা আরও উন্নত:

// create a 3x3x4 array with all positions set to a unique self-aware objects.
var threedimensional = new MultiDimensional([3, 3, 4], function(position, multidimensional) {
    return {
        mydescription: 'I am a cell at position ' + position.join(),
        myposition: position,
        myparent: multidimensional
    }
})

অবস্থানগুলিতে মানগুলি সেট করুন এবং সেট করুন:

// get value
threedimensional.position([2, 2, 2])

// set value
threedimensional.position([2, 2, 2], 'New Value')

0

আমি এর জন্য একটি লিনিয়ার লিখেছি:

[1, 3, 1, 4, 1].reduceRight((x, y) => new Array(y).fill().map(() => JSON.parse(JSON.stringify(x))), 0);

আমি অনুভব করি তবে আমি এখানে JSON.parse(JSON.stringify())বিনামূল্যে ক্লোনিংয়ের জন্য ব্যবহৃত একটি ফ্রি সংস্করণ তৈরি করতে বেশি সময় ব্যয় করতে পারি।

বিটিডব্লিউ, আমার অন্য উত্তরটি এখানে দেখুন


0

আমি জানি এটি একটি পুরানো প্রশ্ন তবে এখানে চেষ্টা করার মতো কিছু রয়েছে: আপনার বহুমাত্রিক অ্যারে তৈরি করুন এবং এটি একটি এইচটিএমএল ট্যাগের মধ্যে রাখুন। এইভাবে আপনি অবশ্যই আপনার অ্যারে'র ইনপুটটিকে লক্ষ্য করতে পারেন:

//Your Holding tag for your inputs!
<div id='input-container' class='funky'></div>

<script>
    //With VAR: you can seperate each variable with a comma instead of:
    //creating var at the beginning and a semicolon at the end.
    //Creates a cleaner layout of your variables
    var
        arr=[['input1-1','input1-2'],['input2-1','input2-2']],
        //globall calls these letters var so you dont have to recreate variable below
        i,j
    ;

    //Instead of the general 'i<array.length' you can go even further
    //by creating array[i] in place of 'i<array.length'
    for(i=0;arr[i];i++){
    for(j=0;arr[i][j];j++){
        document.getElementById('input-container').innerHTML+=
            "<input class='inner-funky'>"+arr[i][j]+"</input>"
        ;
    }}
</script>

এটি আপনার কোডটি লেখার সহজতম উপায় এবং অনুরোধ করা সহজ। আপনি এখানে আমার ডেমো চেক করতে পারেন !


আপনি document.querySelectorAll();ক্লাস, আইডি এবং এমনকি উপাদানগুলি পেয়ে সাহসী হতে পারেন !
গ্যারেথ কমপটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.