当前位置: 首页 > news >正文

JS函数练习题

练习一:综合成绩统计与评级系统

编写一个名为 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)

结果展示:

http://www.jsqmd.com/news/294552/

相关文章:

  • 方波发生器,摆脱了 LC/RC 选频网络?
  • 2026想找优质蒸汽锅炉制造厂家?评测带你一探究竟,锅炉厂家/导热油锅炉/蒸汽锅炉,蒸汽锅炉公司找哪家
  • 2026艺术漆市场风向标:诺兰迪直销厂家值得一试,外墙艺术漆/艺术肌理漆/墙面艺术漆/诺兰迪艺术漆,艺术漆供应商选哪家
  • 冲刺Day4
  • Web学习之网络通信
  • 一文掌握 Spring AI:集成主流大模型的完整方案与思考
  • 入门篇--人工智能发展史-10-从MCP协议到AI Agent:从静态知识到动态智能,智能体的全面演进之路
  • 2026主流GEO服务商全景图谱,GEO机制深度解析与服务商选型权威指南
  • 2026年山东短视频制作服务商权威推荐榜单:短视频策划 /短视频运营 /短视频引流/ 短视频文案 /短视频脚本源头服务商精选
  • Linux(ubuntu)如何锁定cpu频率工作在最低能耗模式下
  • linux下如何通过与AI对话设置thinkpad电池充电阈值
  • 如何更环保(更省钱)的使用各类电子耗材/消耗品/易损件~电池为例
  • 深入解析:STM32——按钮实验
  • 论文答辩时,评审组导师一旦开始问问题,通常会问哪些问题?
  • 多线程核心知识
  • 2025年有实力的户外led大屏广告公司承包商找哪家,公交广告/地铁广告/广播电台广告,户外led大屏广告公司排行
  • 一个月内面了30家公司,薪资从18K变成28K,真行啊····
  • 面了十几家公司测试岗,我终于悟了,面试无非就是这些题
  • 2026年深圳企业邮箱注册公司推荐:深圳市聚诚在线科技有限公司,企业邮箱/企业域名/网易企业邮箱/企业邮箱管理公司精选
  • 嵌入式 C++ 高性能流式架构的设计
  • 河南鑫味源之源:匠心调味,香飘万家 docx
  • 主流GEO服务商能力全景图谱,垂直行业GEO解决方案商
  • 2026高中辅导大揭秘:靠谱机构全解析
  • 河南鑫味源之源调味品:豫南味魂,调出百味鲜香
  • 2026年湖北短视频拍摄制作服务商权威推荐榜:短视频运营 /短视频拍摄 /短视频拍摄运营 /短视频运营方案 /短视频拍摄合作 /短视频运营技巧服务商精选
  • 河南鑫味源之源调味品:大盘鸡料领衔 豫味调味新标杆
  • Claude Code SKill
  • 高中辅导哪家靠谱?这篇攻略帮你避开90%的坑
  • OFFSET动态可视化:WPS表格灵活提取多行多列数据
  • 读研方法-2026