Javascript 使用split(';';)和reverse()查找数组中的最小数;

Javascript 使用split(';';)和reverse()查找数组中的最小数;,javascript,arrays,Javascript,Arrays,我试图找到数组的最小值,并试图通过对数组进行排序,然后反转数组,然后调用数组的第一个索引来实现 不幸的是,由于我一直在努力,我一直得到9分。(不知道为什么)有人能看看我一直在做什么,然后把我保释出来吗?(我正在使用js) 根据你的代码,你可以 return minny.sort()[0]; 因此,您的完整代码示例变成 var minny = [4, 3, 5, 2, 6, 3, 4, 5, 2, 3, 4, 6, 7, 8, 9, 9, 1, 11, 25]; var smallest =

我试图找到数组的最小值,并试图通过对数组进行排序,然后反转数组,然后调用数组的第一个索引来实现

不幸的是,由于我一直在努力,我一直得到9分。(不知道为什么)有人能看看我一直在做什么,然后把我保释出来吗?(我正在使用js)


根据你的代码,你可以

return minny.sort()[0];
因此,您的完整代码示例变成

var minny = [4, 3, 5, 2, 6, 3, 4, 5, 2, 3, 4, 6, 7, 8, 9, 9, 1, 11, 25];


var smallest = function (minny){
    return minny.sort()[0];
}

console.log(smallest(minny))

默认情况下,sort方法按字母顺序对元素进行排序(11在9之前),因此需要添加一个比较函数作为参数

var smallest = function (minny) {
    minny = minny.sort(function(a, b) { return a - b; });
    return minny[0];
}

console.log(smallest(minny))
。您必须提供一个比较函数来进行正确的整数排序,尽管在您的特定情况下,这并没有什么区别

var smallest = function (minny){
    minny = minny.sort(function(a, b){return a-b});
    return minny[0];
}
请参见,您正在调用minny.sort(“”),它使用默认的自然排序,因此11和25由于1和2而接近开头

您需要使用比较数字的函数调用sort,例如:

minny.sort(function(a,b) { return b-a; });
这会按照你想要的方式对minny进行排序

之后甚至不需要调用reverse和join,只需返回第一项即可。“return sorted[0]”可以,但如果没有项目,则将失败,因此您可能只需要调用“return sorted.shift()”。这也将返回第一项,但如果数组为空,则不会失败


另外,您对minny.reverse的调用也有一个空字符串作为参数。这是不需要的,reverse不需要任何参数。

使用sort编写的代码相当短,如果使用
minny.sort(函数(a,b){return a-b})[0],它将返回正确的数字

如果您有一个大的无序数组,您将多次运行比较您将对数组进行排序,这通常不是您想要对数组执行的操作

最好只迭代成员并将每个成员与迄今为止的最低值进行一次比较

var minny= [4, 3, 5, 2, 6, 3, 4, 5, 2, 3, 4, 6, 7, 8, 9, 9, 1, 11, 25];

var smallest= function(minny){
    var min= Infinity;
    minny.forEach(function(next){
        if(next<min) min= next;
    });
    return min;
}

有两件事-
sort()
已按升序排列,无需反转。另外,JS不会按照您的预期排序-11在9之前(它会逐字符进行检查,因此会看到1并将其放在9之前,然后会看到第二个1,但它不理解它是11且大于9的概念-它像字符串一样排序)您只需要最小值吗?您也可以尝试
Math.min.apply(null,[您的数组])
为什么要将字符串传递给
sort()
reverse()
var minny= [4, 3, 5, 2, 6, 3, 4, 5, 2, 3, 4, 6, 7, 8, 9, 9, 1, 11, 25];

var smallest= function(minny){
    var min= Infinity;
    minny.forEach(function(next){
        if(next<min) min= next;
    });
    return min;
}
Math.min.apply(Array,minny);