JavaScript嵌套for循环函数实现及代码错误修正求助
修正嵌套循环生成目标数组的问题
需求说明
编写名为forception的函数,接收两个参数:
- 第一个参数:人名数组
people - 第二个参数:字母字符串
alphabet
要求使用嵌套for循环,生成并返回指定格式的数组:
function forception(people, alphabet){ // your code here } var people = ["Jon", "Jacob", "Jingle", "Heimer", "Schmidt"]; var alphabet = "abcdefghijklmnopqrstuvwxyz";
预期输出
["Jon:", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Jacob:", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Jingle:", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Heimer:", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Schmidt:", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
我的尝试代码
var people = ["Jon", "Jacob", "Jingle", "Heimer", "Schmidt"]; var alphabet = "abcdefghijklmnopqrstuvwxyz"; const finalArray = []; function forception(people, alphabet) { const alphabetArray = alphabet.toUpperCase().split(""); for (const name of people) { for (let i = 0; i < people.length; i++) { finalArray.push(name + alphabetArray); } } console.log(finalArray); } forception(people, alphabet);
当前错误输出
['JonA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JonA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JonA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JonA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JonA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JacobA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JacobA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JacobA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JacobA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JacobA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JingleA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JingleA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JingleA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JingleA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'JingleA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'HeimerA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'HeimerA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'HeimerA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'HeimerA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'HeimerA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'SchmidtA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'SchmidtA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'SchmidtA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'SchmidtA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', 'SchmidtA,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z']
修正后的代码
function forception(people, alphabet) { const finalArray = []; const alphabetArray = alphabet.toUpperCase().split(""); // 外层循环遍历每个人名 for (const name of people) { // 添加带冒号的人名 finalArray.push(`${name}:`); // 内层循环遍历字母数组,逐个添加单个大写字母 for (const letter of alphabetArray) { finalArray.push(letter); } } return finalArray; } // 测试示例 var people = ["Jon", "Jacob", "Jingle", "Heimer", "Schmidt"]; var alphabet = "abcdefghijklmnopqrstuvwxyz"; console.log(forception(people, alphabet));
修正说明
- 变量作用域调整:将
finalArray移至函数内部,避免全局变量污染,符合函数封装原则。 - 内层循环逻辑修正:原内层循环错误遍历
people数组长度,现改为遍历转换后的大写字母数组,逐个添加单个字母。 - 人名格式修正:添加人名时补充冒号
:,匹配预期输出格式。 - 返回结果:函数返回生成的数组,满足题目要求的返回值规范。
内容的提问来源于stack exchange,提问作者GardenDarts
相关产品推荐
相关产品推荐

