<script>
$(document).ready(function() {
var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
$.each(data.programs[0], function(key,val) {
alert(key+val);
});
});
</script>
このコードは最初のデータを取得します。 name:zonealarm
およびprice:500
。オブジェクト内のすべてのデータを取得するにはどうすればよいですか? $.each(data.programs, function(key,val)
を試しましたが、うまくいきませんでした。ループに入れるべきですか?
$.each()
は、オブジェクトと配列の両方で機能します。
var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
$.each(data.programs, function (i) {
$.each(data.programs[i], function (key, val) {
alert(key + val);
});
});
...そして、現在の配列要素を2番目の引数として取得するため:
$.each(data.programs, function (i, currProgram) {
$.each(currProgram, function (key, val) {
alert(key + val);
});
});
実際、各関数に最初のデータ項目を渡します。
代わりに、data.programsを各関数に渡します。コードを次のように変更します。
<script>
$(document).ready(function() {
var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
$.each(data.programs, function(key,val) {
alert(key+val);
});
});
</script>
基本的に、ここで2つのループを実行する必要があります。既に実行しているのは、0番目の配列要素の各要素を繰り返すことです。
プログラムがあります:[{...}、{...}]したがって、programs [0]は{"name": "zonealarm"、 "price": "500"}ですので、ループはそれを超えています。
配列に対して外部ループを行うことができます
$.each(data.programs, function(index) {
// then loop over the object elements
$.each(data.programs[index], function(key, value) {
console.log(key + ": " + value);
}
}