所以我正在尝试做一些最基本的事情,我想知道我的方法有什么问题。
我有一个包含房间的对象
{ rooms:
{ ijxeczyu:
{ Id: 'ijxeczyu',
teacherName: 'testteacher',
teacherId: '/#Ikosyfr1NtDcpKbaAAAA',
clients: [] } },
getRooms: [Function],
addRoom: [Function] }
现在我想将他们的信息呈现给玉石中的一张桌子。 为了工作,我想提取重要的东西并将其推送到数组
function makeArray(obj) {
var roomArray = [];
for (var room in obj) {
roomArray.push({
roomId : room.Id,
teacher : room.teacherName,
clients : room.clients.length || 0
})
}
return roomArray;
}
很容易。
但我无法让那些空的客户端数组工作。
TypeError: Cannot read property 'length' of undefined
是不是|| 0
部分应该抓住的那个?
为什么这不起作用?如果没有条目,我如何读取数组的长度或0
?
答案 0 :(得分:4)
room.clients
是undefined
,这就是您收到该错误的原因。它是undefined
的原因是因为room
是一个字符串。
A for..in
loop遍历对象的键。这意味着room === "ijxeczyu"
,假设您传递了rooms
个对象。要访问该对象,您必须访问该密钥上的对象。
for (var name in obj) {
var room = obj[name];
...
}