How to create a multidimensional array looping over a jquery object

I’m trying to create a multidimensinal array that holds an input name and input value of all matched elements.

I’ve tried so many different combinations of code (none worked), so here’s what I currently have:

var numeric = [[],[]];

var counter = 0;

// loop over all inputs
	numeric[counter][0] = $(this).attr('name');
	numeric[counter][1] = $(this).val();


Everything I try give me this error: Uncaught TypeError: Cannot set property ‘0’ of undefined

Can you show me what I’m doing wrong? Thanks.

I suppose what I’m really after is:

var a = [];
a['input_name_0'] = 'input_value_0';
a['input_name_1'] = 'input_value_1';
a['input_name_2'] = 'input_value_2';
a['input_name_3'] = 'input_value_3';
a['input_name_4'] = 'input_value_4';


You can do it like this:

var numeric = [];
    numeric.push([, this.value]);



However, you might want to consider whether an array is the right data structure in this instance.
Maybe an object is better:

var numeric = {};
    numeric[] = this.value;

  input_1: "1"
  input_2: "2"
  input_3: "3"
  input_4: "4"
  input_5: "5"
  input_6: "6"
  input_7: "7"
  input_8: "8"
  input_9: "9"


Using this method, you can easily reference an element by name and get its value:

=> 1


Yes this helps! thanks.

Wow, I think I tried every other possible syntax variation ( although incorrect syntax ) expect yours: numeric.push([, this.value]);

I will be passing this data structrue to PHP. Is an object better to pass?

If you are passing it to the PHP script via AJAX, then jQuery’s $.ajax() method expects an object (for the data attribute), so that is the way to go.