题解 | #统计成绩#
统计成绩
https://www.nowcoder.com/practice/cad8d946adf64ab3b17a555d68dc0bba
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void async function () { // Write your code here let n = parseInt(await readline()); let scores = (await readline()).split(' ').map(parseFloat); let maxScore = Math.max(...scores); let minScore = Math.min(...scores); let avgScore = scores.reduce((acc, cur) => acc + cur) / n; console.log(maxScore.toFixed(2), minScore.toFixed(2), avgScore.toFixed(2)); }()
let scores = (await readline()).split(' ').map(parseFloat);
在读取下一行输入后,将其按空格分割成一个字符串数组,然后通过map函数将数组中的每个字符串转换为浮点数,最终将转换后的浮点数数组存储在scores变量中
使用Math.max和Math.min函数分别找出数组中的最高分和最低分,使用了扩展运算符...将数组中的所有元素展开为参数传递给这两个函数
使用reduce方法计算数组中所有成绩的总和,并除以n得到平均分。最后使用console.log输出最高分、最低分和平均分,
保留两位小数:num.toFixed(2)会将num这个数字保留两位小数并转换为字符串类型。
reduce方法是用于对数组中的所有元素进行累加的方法。它接受一个回调函数作为参数,这个回调函数接收两个参数:累加器和当前元素。在每次迭代中,回调函数都会将累加器和当前元素相加,并将结果返回给下一次迭代。例如,[1, 2, 3].reduce((acc, cur) => acc + cur)会返回6,因为它将数组中的所有元素相加得到6。
Array.prototype.reduce = function(callback, initialValue) {
// ... 实现逻辑
};
map
是 JavaScript 中数组的一个方法,它可以用于遍历数组中的每个元素,并对每个元素执行指定的操作,然后返回一个新的数组。
Array.prototype.map = function(callback, thisArg) {
// ... 实现逻辑
};
map
方法接受一个回调函数作为参数,这个回调函数会被依次传入数组中的每个元素,并对每个元素执行操作。回调函数可以接受三个参数:当前元素的值、当前元素的索引和原始数组。在回调函数中,我们可以对当前元素进行一些操作,然后将操作后的结果返回。
map
方法最终会返回一个新的数组,这个数组的每个元素都是原始数组中对应元素经过回调函数处理后的结果。
举个例子,假设我们有一个数组 [1, 2, 3, 4]
,我们可以使用 map
方法将数组中的每个元素都乘以 2,然后得到一个新的数组 [2, 4, 6, 8]
。这个操作可以通过下面的代码来实现:
const arr = [1, 2, 3, 4]; const newArr = arr.map(item => item * 2); console.log(newArr); // 输出 [2, 4, 6, 8]