我有一個帶有建構式的學生類學生姓名。我想輕松地生成一個名為“學生 1”、“學生 2”、...的所有學生的陣列
我在想兩個 for 回圈:
function generateNames (studentAmount) {
for (let i = 0; i < studentAmount; i ) {
generateNicknames.push('Student' [i 1])
}
return generateNicknames
}
let allStudents = []
function generateStudents(arrayOfNames) {
for (let j = 0; j < arrayOfNnames.length; j ) {
allStudents.push(new Student(arrayOfNames[j]))
}
return allStudents
}
第一個生成一個包含 ['Student 1', 'Student 2', ] 等的陣列。但第二個只生成 '[Student, Student, Student...]
有什么建議么?
uj5u.com熱心網友回復:
首先,我在第一個函式中移動了空陣列:如果可能,將所有正在修改的變數保留在函式中總是一個好主意。這樣您就可以更輕松地避免碰撞和意外行為。
最后,我還重構了您的第二個函式,使其使用map()函式更短。
map() 方法創建一個新陣列,其中填充了在呼叫陣列中的每個元素上呼叫提供的函式的結果。
function generateNames(studentAmount) {
const nicknames = []; // the array is now inside the function
for (let i = 0; i < studentAmount; i ) {
nicknames.push(`Student${i 1}`);
}
return nicknames;
}
function generateStudents(arrayOfNames) {
return arrayOfNames.map((name) => new Student(name));
}
const names = generateNames(10);
const students = generateStudents(names);
console.log(students) // [Student {name: 'Student1', ...}, ... Student {name: 'Student10', ... }]
uj5u.com熱心網友回復:
您的代碼似乎有效,可以通過使用 array.map 輕松實作。我可以為該generateStudents功能提出更簡單的方法
function generateStudents(arrayOfNames) {
return arrayOfNames.map(name => new Student(name))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520855.html
