Javascript 无最高和最低数字的和数组
我正在尝试解决这个任务(将数组中的所有数字相加(在F#和Haskell中,你会得到一个列表),除了最高和最低的元素(值,而不是索引!)。 (最高/最低元素在每条边上仅为一个元素,即使有多个元素具有相同的值!)) 这是我的代码,但我得到了NaNJavascript 无最高和最低数字的和数组,javascript,arrays,Javascript,Arrays,我正在尝试解决这个任务(将数组中的所有数字相加(在F#和Haskell中,你会得到一个列表),除了最高和最低的元素(值,而不是索引!)。 (最高/最低元素在每条边上仅为一个元素,即使有多个元素具有相同的值!)) 这是我的代码,但我得到了NaN 函数数组(数组){ var和; array.sort(函数(a,b){ 返回a-b }); 对于(var i=1;i
函数数组(数组){
var和;
array.sort(函数(a,b){
返回a-b
});
对于(var i=1;i
需要一个初始值,即0sum
- 在循环中返回
,因此循环只能执行一次迭代。。。曾经在循环之后移动它
- 您不是对一进行求和,而是对最后一个(有序)值进行求和。使用
i
- 您的算法依赖于
,这使得它的时间复杂度为O(nlogn)。如果使用排序
和Math.min
,则可以在O(n)中执行此操作:Math.max
函数数组(数组){
返回数组长度<2?0
:array.reduce((a,b)=>a+b)-Math.min(…array)-Math.max(…array);
}
console.log(
sumArray([6,2,1,8,10])
)
您对空数组的期望是什么?或者一个数组中只有一个值,因为它将同时是最高值和最低值。var sum=0
可能有助于将返回移动到循环外部array.length-2
应该是array.length-1
。但这是ES5+。我认为这有点超出了OP的范围,而且根本就没有运行browsers@mplungjan她没有指定需要更正代码,她概述了任务,并要求解决方案。尽管如此:但是,如果数组中的元素太多,spread(…)和apply都将失败或返回错误的结果,因为他们试图将数组元素作为函数参数传递。
我不知道你为什么一直对数组排序。从集合中找出最大值和最小值不需要它。我可以使用Math.max/min,但它与另一个相同answer@nicodp-我添加了一个在大型阵列上不会失败的无排序版本更新为添加一个版本,其中最小最大值只有一个reduce