Javascript:从array.push()中选择

时间:2014-01-29 16:27:32

标签: javascript arrays node.js

我有这个array.push函数:

users.push({
    username: username,
    rank: 0
});

我需要选择用户数组中有多少用户名:

console.log(username + " joined the chat. "+ users[username].length +" chatters online now!");

但这不起作用:

  

无法读取未定义的“长度”属性

那么,如何选择用户名?

3 个答案:

答案 0 :(得分:1)

我怀疑users.length可以解决问题,因为您使用push函数表明users是线性或非关联数组。但是,如果要查找users数组中实际定义username属性的对象中有多少对象,则需要循环遍历它:

var i = users.length,
    usernameLength;

while(i--) {
    if(users[i].username !== undefined) {
        usernameLength++;
    }
}

// usernameLength represents the amount of users in the users array that have defined usernames
username + " joined the chat. "+ usernameLength +" chatters online now!");

答案 1 :(得分:0)

你推送一个对象,用户是一个数字作为键的数组,每个元素都是对象,用户名和等级为params。

尝试:users [0] .username。

答案 2 :(得分:0)

如果使用filter创建一个包含所有具有用户名的对象的新数组,并计算该长度:

var filtered = users.filter(function (user) {
  return user.username && user.username.length > 0;
});

console.log(filtered.length);

在一行中:

var length = (users.filter(function (user) { return user.username && user.username.length > 0 })).length