访问对象数组中的值

时间:2013-01-25 12:18:14

标签: javascript

  

可能重复:
  I have a nested data structure / JSON, how can I access a specific value?

我是JavaScript初学者,并在Javascript中创建了以下对象数组:

var values = [[{
       x_value: {
           x_axis: 1,
           y_axis: 1.8445
       },
       y_value: {
           x_axis: 1,
           y_axis: 1.2445
       },
       z_value: {
           x_axis: 1,
           y_axis: 1.1445
       }
   }],[{
       x_value: {
           x_axis: 2,
           y_axis: 1.35
       },
       y_value: {
           x_axis: 2,
           y_axis: 1.245
       },
       z_value: {
           x_axis: 22,
           y_axis: 1.345
       }
   }],[{
       x_value: {
           x_axis: 3,
           y_axis: 1.087
       },
       y_value: {
           x_axis: 3,
           y_axis: 1.125
       },
       z_value: {
           x_axis: 3,
           y_axis: 1.95
       }
   }]];

我想在值[0]中访问y_value的x_axis的值,我应该使用哪些方法?提前致谢

2 个答案:

答案 0 :(得分:2)

由于您将对象放在另一个数组中(仅限于对象),因此您需要制作类似的内容来获取值:

var x_axis = values[0][0].y_value.x_axis,
    y_axis = values[0][0].y_value.y_axis;

答案 1 :(得分:1)

如果可能的话,没有充分的理由将每个对象包装在另一个数组中,就像你正在做的那样:

 var yourCode = [[{}],[{}]];
 var better = [{},{}];

如果您可以更改数据,只需确保您的脚本收到一个包含所有对象的数组(如上面的var better格式)。
现在的情况是,您还必须访问内部数组的第一个索引:

var x = values[0][0].x_axis;
var y = values[0][0].y_axis;

如果您更改格式以适应我的吸烟:

var x = values[0].x_axis;

请注意,对象也支持方括号表示法,如果property-name / key是变量的值,这非常有用:

var getProp = 'x_axis';
console.log(values[0][0].getProp);//undefined, looks for property called getProp
console.log(values[0][0][getProp]);//returns value of x_axis property, variables value is used

够了......如果可以的话,请使用第二种格式。它不仅需要较少的输入,而且开销很小,数组不是免费的。您正在创建一个完全不相关的第二个对象(instanceof Array)。