数组最大最小值获取函数的空数组处理异常求助
数组最大最小值获取函数的空数组处理异常求助
嗨,我来帮你分析下问题出在哪以及怎么解决~
首先你的需求很明确:
- 接收数字数组,返回包含
biggest和smallest的对象 - 空数组返回空对象
- 单元素数组的话,最大最小值都是这个元素
你当前的代码在非空数组时是正常的,但遇到空数组时,Math.max(...[])会返回-Infinity,Math.min(...[])会返回Infinity,所以最终生成的对象会带有这两个不符合预期的属性,这就是为啥断言失败啦。
解决办法其实很简单,只需要先判断数组的长度,提前处理空数组的情况就行,修改后的代码如下:
function findBiggestAndSmallest(numbers) { // 先处理空数组的情况,直接返回空对象 if (numbers.length === 0) { return {}; } const obj = {}; obj.biggest = Math.max(...numbers); obj.smallest = Math.min(...numbers); return obj; }
另外补充一下,单元素数组的情况你不用额外处理,因为Math.max(...[5])和Math.min(...[5])都会返回5,刚好符合你的需求~
你可以测试下这个修改后的版本,空数组时就会返回预期的空对象了。
备注:内容来源于stack exchange,提问作者DannyClark90
相关产品推荐
相关产品推荐

