在javascript中访问数组的元素

时间:2013-06-25 18:32:08

标签: javascript

我想在javascript中访问数组中的元素,而不必使用for循环来访问它。

这是我的数组:

var array = [{
    "title": "Warnings",
    "numbers": 30,
    "content": [{
        "number": 3001,
        "description": "There may be a problem with the device you are using if you use the default profile"
    }]
}, {
    "title": "Errors",
    "numbers": 20,
    "content": [{
         "number": 1000,
         "description": "No network is loaded"
    }]
}]

我想在不进行for循环的情况下访问“警告”的“内容”属性。我目前正在进行访问的内容如下:

var content;
for(a in array) {
    if(a.title == "Warnings") {
        content = a.content;
        break;
    }
}

这在javascript中是否可行?

4 个答案:

答案 0 :(得分:3)

处理此问题的最佳方法可能是将数据更改为对象,并通过“标题”访问对象元素:

var data = {
  "Warnings": {
    "numbers": 30,
    "content": [
      {
        "number" : 3001,
        "description" : "There may be a problem with the device you are using if you use the default profile"
      }
    ]
  },
  "Errors": {
    "numbers": 20,
    "content": [
      {
        "number": 1000,
        "description": "No network is loaded"
      }
    ]
  }
};

然后,您可以将{} data.Warnings和错误data.Errors作为警告访问。

如果你不介意测试失败,你可以测试它们是否存在于if (data.Warnings)if (data.Errors),或者if (data.Warnings === undefined)如果您更愿意测试数据是否存在于所有

使用此更新格式,如果数据不可用,则访问类似于“返回的警告内容”,您将使用以下内容:

var content = data.Warnings ? data.Warnings.content : '';

答案 1 :(得分:1)

var content = ar.filter(function(v) {
    return v.title == 'Warnings';
})[0].content;

答案 2 :(得分:0)

如果你知道索引,你可以像这样访问它:

array[0].content

答案 3 :(得分:0)

尝试使用http://jsonselect.org/

你可以使用选择器做你想做的事情:

.title:val("Warnings") ~ .content