关键词

JS搜狐面试题分析

下面我将为你详细讲解“JS搜狐面试题分析”的完整攻略。

1. 题目分析

首先,需要了解这道面试题的要求和限制。根据题目描述,我们需要完成以下几个任务:

  1. 输入一个数字n,生成一个由n个随机数字组成的数组arr;
  2. 计算数组中所有数值的平均数avg,并以最多两位小数的形式输出;
  3. 找出数组中最接近平均数的数字,并输出其值。

2. 解题思路

解题思路可分为以下几个步骤:

  1. 先利用JavaScript生成由n个随机数字组成的数组arr。
  2. 计算arr中所有数值的平均数avg。
  3. 遍历arr数组,计算每个数字与平均数的差值,取绝对值后对比,找到差值最小的数字,即为最接近平均数的数字。
  4. 输出平均数和最接近平均数的数字。

3. 代码实现

根据以上思路,我们可以完成以下代码实现:

// 生成由n位随机数字组成的数组arr
function generateRandomArray(n) {
  var arr = [];
  for (var i = 0; i < n; i++) {
    var num = Math.ceil(Math.random() * 100);
    arr.push(num);
  }
  return arr;
}

// 计算数组中所有数值的平均数
function calculateAverage(arr) {
  var sum = 0;
  var len = arr.length;
  for (var i = 0; i < len; i++) {
    sum += arr[i];
  }
  return (sum / len).toFixed(2);
}

// 找到最接近平均数的数字
function findClosestNumber(arr, avg) {
  var minDiff = Infinity;
  var closestNum = arr[0];
  for (var i = 0; i < arr.length; i++) {
    var diff = Math.abs(avg - arr[i]);
    if (diff < minDiff) {
      minDiff = diff;
      closestNum = arr[i];
    }
  }
  return closestNum;
}

// 测试代码
var arr = generateRandomArray(10);
console.log("数组为:", arr);
var avg = calculateAverage(arr);
console.log("平均数为:", avg);
var closestNum = findClosestNumber(arr, avg);
console.log("最接近平均数的数字为:", closestNum);

上述代码中,我们首先调用generateRandomArray函数生成了由n个随机数字组成的数组arr,然后计算arr中所有数值的平均数avg,接着调用findClosestNumber函数找到最接近平均数的数字closestNum,最后输出结果。

4. 示例说明

以下是两个示例,展示如何使用上述代码实现面试题要求的功能:

示例1

输入:n = 5

输出:

数组为: (5) [53, 90, 83, 78, 97]
平均数为: 80.20
最接近平均数的数字为: 78

示例2

输入:n = 8

输出:

数组为: (8) [7, 46, 80, 100, 89, 49, 13, 43]
平均数为: 54.25
最接近平均数的数字为: 49

以上便是“JS搜狐面试题分析”的完整攻略,希望对你有所帮助!

本文链接:http://task.lmcjl.com/news/9228.html

展开阅读全文