2011-08-18 67 views
1

我有这样的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... 

回答

4

使用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 + '<br />'); 
} 

或jQuery中的each功能:http://api.jquery.com/jQuery.each/

$.each(people, function(i, o) { 
    document.write(o.name + ' ' + o.age + '<br />'); 
}); 
+0

是的,我想通了,我需要做什么环路的例子。 people [0] .length返回undefined。 – Jake

+0

@Jake - 编辑我的答案以显示两个示例。 – RoccoC5

+0

'people'已经是一个数组了,就像在C中一样''people [0]'是数组中的第一个元素,如果你的'people [0]'也是一个数组''people [0] .length' 。 –

3

不知道你想怎么写的页面,但这里有document.write样本:

for (var i = 0, ilen = people.length; i < ilen; i++) 
{ 
    document.write(people[i].name + ' ' + people[i].age + '<br/>'); 
} 

我极力推荐的长度在for循环的第一表现,而不是第二。在这种情况下,people.length不是太贵。但是如果它的代价是,并且你把它放在第二个表达式中,如for (var i = 0; i < people.length; i++),那么它将在的每个循环中得到评估,并且你想知道你的CPU周期在哪里。 :)

2

使用jQuery你可以做

$.each(people, function(){ 
    alert(this.name + " " + this.age); 
}); 

如果你想只是把它添加到一个DIV,你可以通过他们做

$.map(people, function(){ 
    return this.name + " " + this.age + "<br/>"; 
}).appendTo("#myDiv"); 
1

循环。这是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中唯一真正存在的表现。

+0

嗯有趣,你能否简单介绍一下两者的区别? – Jake

+0

我编辑解释更清晰。 – Joe

+0

ahh真棒,非常感谢解释。 – Jake

0

我会使用forEach

people.forEach(function(person) { 
    console.log(person.name, person.age) 
}); 
+0

这是一个JavaScript1.6功能,支持Firefox1.5 +,但不支持IE7或更低版​​本。 –

0

下面是一个例子使用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 
0

在这里你去

工作demo

标记

<div id="people"></div> 

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("<div>").append("<span>"+this.name+"</span>"+this.age+"<br />"); 
    }); 
}); 

的CSS

#people 
{ 
    width:70px; 
    text-align:right; 
} 

#people span 
{ 
    float:left; 
}