news 2026/3/20 3:30:12

JS函数练习题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)

结果展示:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 2:44:47

一个月内面了30家公司,薪资从18K变成28K,真行啊····

工作3年&#xff0c;换了好几份工作&#xff08;行业流行性大&#xff09;&#xff0c;每次工作都是裸辞。朋友都觉得不可思议。因为我一直对自己很有信心&#xff0c;而且特别不喜欢请假面试&#xff0c;对自己负责也对公司负责。 但是这次没想到市场环境非常不好&#xff0c;…

作者头像 李华
网站建设 2026/3/15 21:47:56

Device (P2P0)下的子节点Device (S7F0)不存在

Device (P2P0)下的子节点Device (S7F0)不存在dsdt.dsl:6096: Device (P2P0) dsdt.dsl:6306: Device (S1F0) dsdt.dsl:6338: Device (S2F0) dsdt.dsl:6370: Device (S3F0) dsdt.dsl:6402: Device (S4F0…

作者头像 李华
网站建设 2026/3/15 10:23:31

OFFSET动态可视化:WPS表格灵活提取多行多列数据

一、问题的提出 日常工作中经常需要从结构化报表中查询并提取特定公司的多期数据。例如&#xff1a;在月度销售报表中&#xff0c;根据公司名称动态返回其1-6月的详细数据。这种需求常见于经营分析、数据看板及报告生成等场景。 假设有一张公司月度数据表&#xff0c;A列为公司…

作者头像 李华
网站建设 2026/3/16 1:07:43

深入剖析 WebHostView:浏览器内核中的桌面级 Web 宿主

引言随着桌面级 Web 应用需求的增加&#xff0c;浏览器内核的角色逐渐从一个单纯的网页渲染引擎演化为一个“Web 运行时平台”&#xff0c;为更多类型的应用场景提供支持。在这一过程中&#xff0c;WebHostView 作为一个关键组件&#xff0c;担当了将传统的网页浏览功能与桌面应…

作者头像 李华