Javascript 当数组中不存在数字时,函数应返回“0”

Javascript 当数组中不存在数字时,函数应返回“0”,javascript,arrays,Javascript,Arrays,给定一个混合元素数组,我的函数需要返回该数组中的最小数 要求: 如果给定数组为空,则应返回0 如果数组不包含数字,则应返回0 我无法通过测试,如果数组不包含数字,它应该返回0。这是我的密码: 函数findCallestNumberMongMixedElements(arr){ //你的代码在这里 if(arr.length==0)返回0; var shortest=arr.filter(函数(a,b){ 返回类型a==='number'&&a-b; }); 返回Math.min.apply

给定一个混合元素数组,我的函数需要返回该数组中的最小数

要求:

  • 如果给定数组为空,则应返回0
  • 如果数组不包含数字,则应返回0
我无法通过测试,如果数组不包含数字,它应该返回0。这是我的密码:

函数findCallestNumberMongMixedElements(arr){
//你的代码在这里
if(arr.length==0)返回0;
var shortest=arr.filter(函数(a,b){
返回类型a==='number'&&a-b;
});
返回Math.min.apply(null,最短);
}
var output=FindCallestNumberMongMixedElements(['string','string']);

console.log(输出);//=>无穷大(预期为0)
过滤后需要检查长度

函数findCallestNumberMongMixedElements(arr){
//你的代码在这里
var最短=arr.filter(函数(a){
返回!isNaN(a);
});
if(shortest.length==0)返回0;
返回Math.min.apply(null,最短);
}
log(FindCallestNumberMongMixedElements([“foo”,“bar”,1]));
log(FindCallestNumberMongMixedElements([“foo”,“bar]”));
log(FindCallestNumberMongMixedElements([“foo”,“bar”,1,2,3]);

log(FindCallestNumberMongMixedElements([“foo”,“bar”,4,6,7])
传递给
过滤器的函数不接受两个参数。您应该首先过滤数组以仅获取类型为
number
的元素,然后使用三元运算符返回最小值(如果该列表为非空,则返回零),否则:

函数findCallestNumberMongMixedElements(数组){
array=array.filter(函数(e){returntypeof e=='number'})
返回array.length?Math.min.apply(null,数组):0
}
console.log(
FindCallestNumberMongMixedElements(['10','])/=>0
)
console.log(
FindCallestNumberMongMixedElements([10,'])/=>10

)
这将返回正确值

    function findSmallestNumberAmongMixedElements(arr) {
        var shortest = arr.filter(function (a, b) {
            return typeof a === 'number' ? 0 : a - b;
        });
        if (shortest.length === 0) return 0;
        return Math.min.apply(null, shortest);
    }

请添加一些数据和想要的结果。请参阅-只需交换<运算符。检查您的
arr.filter
callback从其索引(b)中减去元素(a)-为什么?因为我不完全理解我在做什么。我试图先用reduce()来解决它。或者只是
返回Math.min.apply(null,array)| | 0
我想那也行,但是
Math.min.apply(null,[])
返回
无穷大
。这就是我最后做的。