javascript中空数组的长度

时间:2016-01-27 22:37:53

标签: javascript arrays

所以我正在尝试做一些最基本的事情,我想知道我的方法有什么问题。

我有一个包含房间的对象

{ 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

1 个答案:

答案 0 :(得分:4)

room.clientsundefined,这就是您收到该错误的原因。它是undefined的原因是因为room是一个字符串。

A for..in loop遍历对象的键。这意味着room === "ijxeczyu",假设您传递了rooms个对象。要访问该对象,您必须访问该密钥上的对象

for (var name in obj) {
  var room = obj[name];
  ...
}