【问题标题】:Javascript accessing nested elementsJavascript访问嵌套元素
【发布时间】:2014-11-26 12:45:09
【问题描述】:

我有一个类似这样的数组:

result = {
   akch_generation: 11841,
   akch_chassis: [{
    akch_sp: [{
        akch_faulted: false,
        akch_present: true,
        akch_fru: 'hc:///chassis=0/sp=0'
    }],
    akch_fan: [{
   ....
 }

我想得到 akch_faulted 的值,但我不知道怎么做。

我试过了:

hardware.config().akch_chassis.akch_sp => result = undefined

hardware.config().akch_chassis.akch_sp.akch_faulted =>
error: illegal argument expression: "hardware.config().akch_chassis.akch_sp has
   no properties"

其中 hardware.config() 是我运行以获取结果数组的命令。

我只能深入到 akch_chassis...

谁能帮帮我?

【问题讨论】:

  • result.akch_chassis[0].akch_sp[0].akch_faulted?
  • 是的!谢谢!可惜你没有回复答案部分在哪里......

标签: javascript arrays nested multi-level


【解决方案1】:

首先result不是一个数组,是一个对象。

问题是你的嵌套对象在数组中,所以要访问属性 akch_faulted 你需要这样写:

result.akch_chassis[0].akch_sp[0].akch_faulted

【讨论】:

  • 已经尝试了这两种方法,但都不起作用:hardware.config().akch_chassis.akch_sp.akch_faulted 错误:非法参数表达式:“hardware.config().akch_chassis.akch_sp 没有属性” hardware.config() 给了我那个对象。
  • @Cristina 你能把你的整个代码贴出来吗?
  • 我怕我做不到。我在一台机器上运行这个命令 hardware.config(),它会显示这个对象(它非常大)。
  • 我不认为你的 cmets 很有用?根据定义,数组是一个对象,所以真的没有“数组表示法”吗?我说错了吗?
  • 我不知道是 Saajan 还是你第一个回答,但我会给你答案,因为你说得很好。感谢您的解决方案。
【解决方案2】:

这是在javascript中获取值的解决方案。

var myvalue = result.akch_chassis[0].akch_sp[0].akch_faulted

<script type="text/javascript" language="javascript" src="my.json"></script>
<script>
window.onload = function(){
var myvalue = result.akch_chassis[0].akch_sp[0].akch_faulted;
console.log(myvalue);
    }
</script>

【讨论】:

  • 太棒了!有用!非常感谢!现在我看到了它背后的逻辑。
【解决方案3】:

这可能会有所帮助,

  for(var i=0;i<=result.akch_chassis.length;i++){
     for(var j=0;j<=result.akch_chassis[i].akch_sp.length;j++){
       var value=result.akch_chassis[i].akch_sp[j].akch_faulted;
     }
    }

【讨论】: