gpt4 book ai didi

javascript - 排序数组 Javascript

转载 作者:数据小太阳 更新时间:2023-10-29 06:14:07 24 4
gpt4 key购买 nike

我是 javascript 的新手(我已经接触过 DOM 操作,但是对于这个作业,我们可以根据教授在一个简单的 console.log 中显示输入)并且我遇到了这个学校应该解决的问题作业,我需要接受用户输入的 3 个数字,显示它们,并显示输入的最大和最小数字以及平均值。我下面的代码按照我的预期进行预制,但我正在寻找改进的反馈,我仍在训练我的大脑来分解这些类型的问题并组织我的思维。我想练习“最好”的方法或最有效的方法,因为我的思维和逻辑还没有定义,我正处于一切都是新的阶段,所以我可以学习最有效的方法/策略。非常感谢解决此问题的任何改进或更好的方法。

谢谢!

let num = parseFloat(prompt("enter your first number"));
let num1 = parseFloat(prompt("enter your second number"));
let num2 = parseFloat(prompt("enter your third number"));

let avg = parseFloat(console.log('The Average of The Numbers',
num, ',', num1, ',', num2, 'Is:', (num + num1 + num2) / 3));

let numTot = parseFloat(console.log(`The Numbers You Have Entered
Are`, num, +num1, +num2));

let total = parseFloat(console.log('The Total Of', num, '+', num1,
'+', num2, 'Is :', num + num1 + num2));

let highest = Math.max(num, num1, num2);
let lowest = Math.min(num, num1, num2);

console.log("The Highest Number Entered Is:", highest);
console.log("The Lowest Number Entered Is:", lowest);

最佳答案

这是我的做法:

  • 在数组中声明你的数字。在 coerce 前加上 + 前缀他们从 StringNumber
  • Array.reduce遍历你的数组并计算平均值。
  • 使用spread syntax获取累加器对象中的最小/最大值,你传递给 .reduce

// prompt returns a String, prefix with + 
// to coerce them to Numbers, since we'll be
// working with numbers.
const numbers = [
+prompt('Enter number 1'),
+prompt('Enter number 2'),
+prompt('Enter number 3')
]

const result = numbers.reduce((acc, number, index) => {
// For each number:

// Add the number to the accumulator sum.
acc.sum += number

// If this is the last iteration:
if (index === numbers.length - 1) {
// Calculate the average from the sum.
acc.avg = acc.sum / numbers.length

// Also discard the sum property, we no longer need it.
delete acc.sum
}

// Return the accumulator for the next iteration.
return acc
}, {
// Our accumulator object, initialised with min/max values.
min: Math.min(...numbers),
max: Math.max(...numbers),
sum: 0,
avg: 0
})

// Log the processed accumulator.
console.log(result)

为什么要使用循环?

Array.reduce 在数组上循环,类似于 for 循环的方式。使用类似循环的构造允许您在 numbers 数组中添加更多数字,而无需修改您的计算代码。

为什么在循环结束时除法?

在循环结束时对数字求和并除一次有助于避免 numerical errors .

如果您在每次迭代中执行 acc.avg = acc.avg + number/numbers.length,您会开始注意到平均值有点偏差。只是为了它而尝试。

对于初学者来说可能看起来有点复杂,但这 2 个概念(尤其是 Array.reduce)值得研究。 FWIW,为教学 Array.reduce 给出的类示例正在计算一组数字的平均值。

关于javascript - 排序数组 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54358249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com