非常基本的JSON问题
我有这个JSON数据:
var people = [ { name : "John", age : 25 }, { name : "Jane", age : 49 }, { name : "Jim", age : 31 }, { name : "Julie", age : 39 }, { name : "Joe", age : 19 }, { name : "Jack", age : 48 } ];
我如何遍历人们内部的所有对象并输出他们的名字以及他们的年龄,如下所示:
John 25 Jame 49 followed by the rest...
使用for循环: http : //www.w3schools.com/js/js_loop_for.asp
for (var i = 0; i < people.length; i++) { document.write(people[i].name + ' ' + people[i].age + '
'); }
或者jQuery中的each
函数: http : //api.jquery.com/jQuery.each/
$.each(people, function(i, o) { document.write(o.name + ' ' + o.age + '
'); });
不确定如何将其写入页面,但这是一个带有document.write
的示例:
for (var i = 0, ilen = people.length; i < ilen; i++) { document.write(people[i].name + ' ' + people[i].age + '
'); }
我强烈建议在for循环的第一个表达式中获取长度,而不是第二个。 在这种情况下, people.length
不是太贵。 但是如果它代价for (var i = 0; i < people.length; i++)
而你把它放在第二个表达式for (var i = 0; i < people.length; i++)
,那么它将在每个循环中得到评估,并且你想知道你的CPU周期在哪里。 :)
使用jquery,你可以做到
$.each(people, function(){ alert(this.name + " " + this.age); });
如果你想将它附加到div,你就可以做到
$.map(people, function(){ return this.name + " " + this.age + "
"; }).appendTo("#myDiv");
循环通过它们。 这些是Javascript对象文字而不是JSON,只是FYI
for(var i = 0; i < people.length; i++) { alert(people[i].name + " " + people[i].age) }
例如:
var variable = { 'key': 'value' }; // object console.log(variable.key); // outputs: value var json = '{"key":"value"}'; // javascript string representing valid json console.log(json.key); // outputs: undefined var jObj = JSON.parse(json); // now a javascript object from the json string console.log(jObj.key); // outputs: value
所以JSON只存在于javascript中作为表示。
我用的是forEach
:
people.forEach(function(person) { console.log(person.name, person.age) });
以下是使用jquery的示例:
var people = [ { name : "John", age : 25 }, { name : "Jane", age : 49 }, { name : "Jim", age : 31 }, { name : "Julie", age : 39 }, { name : "Joe", age : 19 }, { name : "Jack", age : 48 } ]; jQuery.each(people, function(index, person){ console.log([person.name, person.age].join(" ")) ; });
输出:
John 25 Jane 49 Jim 31 Julie 39 Joe 19 Jack 48
干得好
工作演示
标记
JS
var people = [ { name : "John", age : 25 }, { name : "Jane", age : 49 }, { name : "Jim", age : 31 }, { name : "Julie", age : 39 }, { name : "Joe", age : 19 }, { name : "Jack", age : 48 } ]; $(function(){ var $people = $("#people"); $.each(people, function(){ $people.append("").append(""+this.name+""+this.age+"
"); }); });
CSS
#people { width:70px; text-align:right; } #people span { float:left; }