为什么我的对象显示为“[object Object]”?

为什么我的对象显示为“[object Object]”?

问题描述:

我试图冒泡排序的年龄记录数组,但我得到的是:为什么我的对象显示为“[object Object]”?

[目标对象],[目标对象],[目标对象]

我怎么能让它显示记录的值?

students = [ 
    {name: "timothy", age: "9"}, 
    {name: "claire", age: "12"}, 
    {name: "michael", age: "20"} 
]; 

for (var i = 0; i < students.length; i++) { 
    for (var j = i + 1; j < students.length; j++) { 
     if (Number(students[i].age) > Number(students[j].age)) { 
      tempValue = students[j].age; 
      students[j].age = students[i].age; 
      students[i].age = tempValue; 
     } 
    } 
} 

alert(students); 
+3

可能重复[如何选择我打印一个javascript对象?](http://stackoverflow.com/questions/957537/how-can-i-print-a-javascript-object) –

+1

顺便说一句,小心点关于使用“学生”和“tempValue”等未声明的变量。默认情况下,它们可以是全球性的,而且往往不是你想要的。 – hugomg

默认情况下,在JavaScript中的所有对象转向"[object Object]"当它们被转换成字符串(如与alert()的情况下)。

你可以尝试:

  • 使用的console.log或调试器来检查数组(而不是使用警报())

    console.log(students); 
    //Open your browser's developer tools to see the console. 
    //Try F12, ctrl+shift+J or ctrl+shift+I as shortcuts 
    
  • 使用JSON.stringify功能序列化对象。

    JSON.stringify({a:1}); 
    //yields '{"a":1}' 
    
  • 给你的对象一个自定义的toString方法

    var x = { 
        a : 17, 
        toString: function(){ 
         return 'I have a ' + this.a; 
        } 
    }; 
    alert(x); //gives "I have a 17" 
    
+1

+1为JSON.stringify –

+1

“通过F12或ctrl + shift + J” – Raynos

+2

在Ctrl和Shift + I中Opera和Chrome。 – c69

在你可以提醒或登录一个JSON字符串表示支持的浏览器:的

alert(JSON.stringify(students));