无法获取数组的值
Can't get value of array
仍然无法理解我对这段代码的错误。
所有我想要的 - 通过 提示 获取所有用户列表(姓名/姓氏)
function UserList() {
let users = [];
while (true) {
let response = prompt('Please, enter your name surname?');
if (response == null) {
alert('cancel');
break;
}
users.push(response.split(' '));
}
return users;
}
function User() {
this.name = userList[0];
this.surname = userList[1];
this.regDate = new Date;
for (i = 0; i < userList.length; ++i) {
console.log('Name: ' + this.name + ' Surname: ' + this.surname + '. Date of registration : ' + this.regDate)
}
}
let userList = new UserList();
let user = new User();
而且我遇到了一个误解,为什么尽管我输入了 users.push (response.split(' ')),但我还是无法得到 prompt 的第一个词。
userList [0] - 显示数组的第一个 index 而不是第一个单词。
其次,我想获取 console.log 中的所有用户列表,但我根据数组的长度得到相同的字符串
您正在将一个数组压入另一个数组,因此您的索引不正确(数组如下所示:[["firstname", "lastname"]]
)。您可以在使用 spread operator (...
) 推送时展开项目,也可以使用 flat()
.
展平数组
另外,在创建日期时,使用 new Date()
。
function UserList() {
let users = [];
while (true) {
let response = prompt('Please, enter your name surname?');
if (response == null) {
alert('cancel');
break;
}
users.push(...response.split(' ')); // flatten
}
return users;
}
function User() {
this.name = userList[0];
this.surname = userList[1];
this.regDate = new Date(); // ()
console.log('Name: ' + this.name + ' Surname: ' +
this.surname + '. Date of registration : ' + this.regDate)
}
let userList = new UserList();
let user = new User();
使用flat()
return users.flat();
编辑
其实我理解错了问题(以为你只想要 1 个用户),另一个答案应该是正确的并且更有意义。
userList[0] 在函数 User 中将 return 一个数组:['name', 'surname']。
例如,要获取名字,您需要使用 this.name = userList[i][0]
function UserList() {
let users = [];
while (true) {
let response = prompt('Please, enter your name surname?');
if (response == null) {
alert('cancel');
break;
}
users.push(response.split(' '));
}
return users;
}
function User() {
for (var i = 0; i < userList.length; ++i) {
this.name = userList[i][0];
this.surname = userList[i][1];
this.regDate = new Date;
console.log('Name: ' + this.name + ' Surname: ' + this.surname + '. Date of registration : ' + this.regDate)
}
}
let userList = new UserList();
let user = new User();
UserList 不应是构造函数。它应该只是一个函数,returns 一个名称数组。
您不应在 User
内遍历 的用户列表。然后,您应该迭代数组,在每次迭代时创建 一个新的 User
, 应该 从构造函数生成。您可以只传入数组中的每个名称并构建一个新对象。
function getNames() {
const users = [];
while (true) {
const response = prompt('Please, enter your first and last names');
if (response == null) break;
users.push(response.split(' '));
}
return users;
}
// Pass in a user name from the array as an argument
// It's array so we can destructure the first and last name
// immediately
function User([first, last]) {
this.first = first;
this.last = last;
this.regDate = new Date();
this.message = `Name: ${this.first}. Surname: ${this.last}. Date of registration: ${this.regDate}.`;
}
// Iterate over the array generated by `getUsers`
// and for each name create a new user.
for (let name of getNames()) {
console.log(new User(name));
}
其他文档
仍然无法理解我对这段代码的错误。 所有我想要的 - 通过 提示 获取所有用户列表(姓名/姓氏)
function UserList() {
let users = [];
while (true) {
let response = prompt('Please, enter your name surname?');
if (response == null) {
alert('cancel');
break;
}
users.push(response.split(' '));
}
return users;
}
function User() {
this.name = userList[0];
this.surname = userList[1];
this.regDate = new Date;
for (i = 0; i < userList.length; ++i) {
console.log('Name: ' + this.name + ' Surname: ' + this.surname + '. Date of registration : ' + this.regDate)
}
}
let userList = new UserList();
let user = new User();
而且我遇到了一个误解,为什么尽管我输入了 users.push (response.split(' ')),但我还是无法得到 prompt 的第一个词。 userList [0] - 显示数组的第一个 index 而不是第一个单词。
其次,我想获取 console.log 中的所有用户列表,但我根据数组的长度得到相同的字符串
您正在将一个数组压入另一个数组,因此您的索引不正确(数组如下所示:[["firstname", "lastname"]]
)。您可以在使用 spread operator (...
) 推送时展开项目,也可以使用 flat()
.
另外,在创建日期时,使用 new Date()
。
function UserList() {
let users = [];
while (true) {
let response = prompt('Please, enter your name surname?');
if (response == null) {
alert('cancel');
break;
}
users.push(...response.split(' ')); // flatten
}
return users;
}
function User() {
this.name = userList[0];
this.surname = userList[1];
this.regDate = new Date(); // ()
console.log('Name: ' + this.name + ' Surname: ' +
this.surname + '. Date of registration : ' + this.regDate)
}
let userList = new UserList();
let user = new User();
使用flat()
return users.flat();
编辑
其实我理解错了问题(以为你只想要 1 个用户),另一个答案应该是正确的并且更有意义。
userList[0] 在函数 User 中将 return 一个数组:['name', 'surname']。 例如,要获取名字,您需要使用 this.name = userList[i][0]
function UserList() {
let users = [];
while (true) {
let response = prompt('Please, enter your name surname?');
if (response == null) {
alert('cancel');
break;
}
users.push(response.split(' '));
}
return users;
}
function User() {
for (var i = 0; i < userList.length; ++i) {
this.name = userList[i][0];
this.surname = userList[i][1];
this.regDate = new Date;
console.log('Name: ' + this.name + ' Surname: ' + this.surname + '. Date of registration : ' + this.regDate)
}
}
let userList = new UserList();
let user = new User();
UserList 不应是构造函数。它应该只是一个函数,returns 一个名称数组。
您不应在
User
内遍历 的用户列表。然后,您应该迭代数组,在每次迭代时创建 一个新的User
, 应该 从构造函数生成。您可以只传入数组中的每个名称并构建一个新对象。
function getNames() {
const users = [];
while (true) {
const response = prompt('Please, enter your first and last names');
if (response == null) break;
users.push(response.split(' '));
}
return users;
}
// Pass in a user name from the array as an argument
// It's array so we can destructure the first and last name
// immediately
function User([first, last]) {
this.first = first;
this.last = last;
this.regDate = new Date();
this.message = `Name: ${this.first}. Surname: ${this.last}. Date of registration: ${this.regDate}.`;
}
// Iterate over the array generated by `getUsers`
// and for each name create a new user.
for (let name of getNames()) {
console.log(new User(name));
}
其他文档