为什么我的对象显示为“[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);
答
默认情况下,在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"
答
在你可以提醒或登录一个JSON字符串表示支持的浏览器:的
alert(JSON.stringify(students));
可能重复[如何选择我打印一个javascript对象?](http://stackoverflow.com/questions/957537/how-can-i-print-a-javascript-object) –
顺便说一句,小心点关于使用“学生”和“tempValue”等未声明的变量。默认情况下,它们可以是全球性的,而且往往不是你想要的。 – hugomg