我必须创建一个函数,在数组中的混合元素中找到最小的数字:
function findSmallestNumberAmongMixedElements(arr) {
if (arr.length === 0) {
return 0;
}
var num_arr = arr.filter(e => { return typeof e === 'number'});
return num_arr.sort( (a, b) => { return a - b})[0];
}
var output = findSmallestNumberAmongMixedElements([4, 'lincoln', 9, 'octopus']);
console.log(output); // --> 4
似乎正在工作,但我没有通过测试,如果数组中没有数字,我必须返回0
。我试图找出一种简单的方法,在开头用if语句编写它,但我找不到一个直截了当的答案。正在考虑使用includes
,但似乎includes
查找特定元素而不是数据类型。有什么建议?
提前致谢。
答案 0 :(得分:0)
你可以使用array.reduce()来做到这一点
function findSmallestNumberAmongMixedElements(arr) {
let result = arr.reduce(function(a, b){
if(typeof b != 'number')
return a;
if(typeof a != 'number')
return b;
return a<b ? a : b;
})
return (typeof result == 'number' ? result : 0);
}
var output = findSmallestNumberAmongMixedElements([4, 'lincoln', 9, 'octopus']);
console.log(output);
&#13;