2

Can you please help with my problem

I have the following JavaScript object:

var data = {                                   

    'rows[0][name]':    'foshka',
    'rows[0][tel]':    '096',
    'rows[0][opt]':    'none'

};

The problem is that i get an error while trying to pass variable as rows index:

var i = 0;
var data = {                                   

    'rows['+ i +'][name]':   'one',
    'rows['+ i +'][tel]':    '096',
    'rows['+ i +'][opt]':    'none'

};

Thanks in advance

James Wiseman
  • 29,946
  • 17
  • 95
  • 158
alega
  • 21
  • 1
  • 2

2 Answers2

4

Your code has to be

var data = {};
data[ 'rows['+ i +'][name]' ] = 'one';
data[ 'rows['+ i +'][tel]' ] = '069';

However you might want to change your structure to sth like this:

var data ={};
var i = 0;
data['rows'][i]['name'] = 'one';

Or even cleaner:

var data = { rows[] };

var i = 0;
data['rows'][i] = { 'name' : 'one', 'tel' : 069' };

// so you can access them like this:
alert ( data['rows'][i]['name'] );
jantimon
  • 36,840
  • 23
  • 122
  • 185
  • The second structure will throw an error unless `data['rows']` and `data['rows'][i]` are defined first. – Andy E Jul 22 '10 at 13:23
  • 1
    Please change it into option two - currently it's a crime against programming :) – Skilldrick Jul 22 '10 at 13:23
  • There's no requirement to use bracket notation to define crazy object properties. Only when accessing said properties is it necessary. – MooGoo Jul 22 '10 at 13:23
2

I think your data should look like this:

var data = {
  rows: [{
    name: 'one',
    tel: '096',
    opt: null
  }]
};

That way you can simply add new rows if needed.

Wolph
  • 78,177
  • 11
  • 137
  • 148