我有这个array.push函数:
users.push({
username: username,
rank: 0
});
我需要选择用户数组中有多少用户名:
console.log(username + " joined the chat. "+ users[username].length +" chatters online now!");
但这不起作用:
无法读取未定义的“长度”属性
那么,如何选择用户名?
答案 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