0

forループを実行せずにjavascriptの配列内の要素にアクセスしたい。

これが私の配列です:

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

4 に答える 4

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

null がテストに失敗しても構わない場合、またはデータが存在するif (data.Warnings)かどうかをテストしたい場合は、それらが存在することをテストできます。if (data.Errors)if (data.Warnings === undefined)

この更新された形式を使用して、データが利用できない場合に返される '' と同様の警告の内容にアクセスするには、次のようなものを使用します。

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

于 2013-06-25T18:38:29.037 に答える
1
var content = ar.filter(function(v) {
    return v.title == 'Warnings';
})[0].content;
于 2013-06-25T18:45:18.737 に答える
0

インデックスがわかっている場合は、次のように簡単にアクセスできます。

array[0].content
于 2013-06-25T18:35:16.450 に答える
0

http://jsonselect.org/を使用してみてください

セレクターを使用して、必要なことを実行できます。

.title:val("Warnings") ~ .content
于 2013-06-25T19:05:45.087 に答える