练习一:综合成绩统计与评级系统
编写一个名为 analyzeGrades 的函数,该函数接收一个包含若干学生成绩(0-100之间的数字)的数组作为参数。请完成以下功能:
数据清洗:过滤掉数组中无效的数据(非数字类型、小于0或大于100的数值),将有效成绩存入一个新数组。
基础统计:计算有效成绩的总分、平均分、最高分和最低分。
等级判定:遍历有效成绩数组,根据分数段判断等级(90-100为“优”,80-89为“良”,60-79为“中”,60以下为“差”),并统计各等级的人数。
结果返回:返回一个对象,包含有效成绩数组、总分、平均分、最高分、最低分以及等级统计对象。
代码如下:
function analyzeGrades(grades){ let validGrades=[] for(let score of grades){ if( typeof score==='number' && !isNaN(score) && score>=0 && score<=100){ validGrades.push(score) } } let you_count=0 let liang_count=0 let cha_count=0 let zhong_count=0 let sum=0 let avg=0 let max=0 let min=0 if(validGrades.length>0){ max=validGrades[0] min=validGrades[0] for(let i=0;i<validGrades.length;i++){ let currentscore=validGrades[i] sum+=currentscore if(currentscore<min){ min=currentscore } if(currentscore>max){ max=currentscore } if(currentscore>=90 && currentscore<=100){ you_count++ }else if(currentscore>=80 && currentscore<=89){ liang_count++ }else if(currentscore>=60 && currentscore<=79){ zhong_count++ }else{ cha_count++ } } avg = sum / validGrades.length } return{ validGrades:validGrades, sum:sum, max:max, min:min, you_count:you_count, liang_count:liang_count, zhong_count:zhong_count, cha_count:cha_count, avg:avg } } testScores=[23,54,75,89,95,'abc',0,100,-20] let result =analyzeGrades(testScores) console.log(`总分:${result.sum}`) console.log(`平均分:${result.avg}`) console.log(`最大值:${result.max}`) console.log(`最小值:${result.min}`) console.log(`优:${result.you_count}`) console.log(`良:${result.liang_count}`) console.log(`中:${result.zhong_count}`) console.log(`差:${result.cha_count}`)结果展示:
练习二:寻找“完数”
题目描述:
一个数如果恰好等于它的所有真因子(即除了自身以外的约数)之和,这个数就被称为“完数”。例如:6 = 1 + 2 + 3,所以6是完数。
请编写一个函数 findPerfectNumbers(start, end),找出并返回 start 到 end 范围内(包含两头)所有的完数组成的数组。
要求:
函数接收两个数字参数 start 和 end。
使用嵌套循环:外层循环遍历范围内的每一个数字,内层循环寻找该数字的因子。
如果该数是完数,将其存入结果数组。
返回该数组。
代码如下:
function findPerfectNumbers(start,end){ let perfectNums=[] for(let num=start;num<=end;num++){ if(num<2){ continue } let sum=0 for(let i=1;i<num;i++){ if(num%i===0){ sum+=i } if(sum===num){ perfectNums.push(num) } } return(perfectNums) } let testNums=findPerfectNumbers(1,100) console.log(testNums)结果展示:
练习三:数组合并与去重
题目描述:
编写一个函数 mergeArrays(arr1, arr2),将两个数组合并成一个新的数组,并去除其中重复的数字(如果两个数组中有相同的数字,新数组中只保留一个)。
要求:
函数接收两个数组参数 arr1 和 arr2。
创建一个空数组 result 用于存放结果。
先将 arr1 中的所有元素添加到 result 中。
再遍历 arr2,对于 arr2 中的每一个元素,检查它在 arr1 或 result 中是否已经存在。
如果不存在,才将其添加到 result 中。
返回 result。
示例:
输入:mergeArrays([1, 2, 3], [2, 3, 4, 5])
输出:[1, 2, 3, 4, 5]
代码如下:
function mergeArrays(arr1,arr2){ let result=[] for(let i=0;i<arr1.length;i++){ result.push(arr1[i]) } for(let j=0;j<arr2.length;j++){ let isExist=false for(let k=0;k<result.length;k++){ if(arr2[j]===result[k]){ isExist=true break } } if(!isExist){ result.push(arr2[j]) } } return(result) } let testArrays=mergeArrays([1,2,3],[2,3,4,5]) console.log(testArrays)结果展示: