我需要对一组数字进行排序,以便返回其最小值和最大值。我到目前为止编写的代码似乎根本没有做任何事情。
function sort(array) {
arrayNew = [];
maximum = array[0];
minimum = array[0];
for (i = 0; i < array.length; i++) {
if (maximum < array[i]) {
maximum = array[i];
}
}
arrayNew.push(maximum);
for (i = 0; i < array.length; i++) {
if (minimum > array[i]) {
minimum = array[i];
}
}
arrayNew.unshift(minumum);
return arrayNew;
}
var arr1 = [3, 8, 7, 6, 5, -4, 3, 2, 1];
alert(sort(arr1));
答案 0 :(得分:2)
如果您不知道有更简单的方法从数组中获取最小值和最大值 - 请使用Math.min
和Math.min
与apply
:
var min = Math.min.apply(null, arr1);
var max = Math.max.apply(null, arr1);
答案 1 :(得分:1)
minumum
拼写错误。应该是minimum
请勿在未使用var
关键字声明变量的情况下使用变量。否则他们将成为全球财产。
此外,您还可以在与maximum
相同的循环中进行最低限度检查。因此,您的代码可以像这样缩短
function sort(array) {
var maximum = array[0],
minimum = array[0],
i;
for (i = 0; i < array.length; i++) {
if (maximum < array[i]) {
maximum = array[i];
}
if (minimum > array[i]) {
minimum = array[i];
}
}
return [minimum, maximum];
}
现在我们知道,我们可以这样做,让我们尝试用三元运算符来缩短它
function sort(array) {
var maximum = array[0],
minimum = array[0],
i;
for (i = 0; i < array.length; i++) {
maximum = maximum < array[i] ? array[i] : maximum;
minimum = minimum > array[i] ? array[i] : minimum;
}
return [minimum, maximum];
}
答案 2 :(得分:1)
var arr = [ 3, 8, 7, 6, 5, -4, 31, 2, 21, 20, 1 ].sort(function(a, b) { return a - b }), // [-4, 1, 2, 3, 5, 6, 7, 8, 20, 21, 31]
min = arr[0], // min
max = arr[arr.length-1]; //max
答案 3 :(得分:0)
arrayNew.unshift(minumum);
是错误的变量minimum
正确答案:arrayNew.unshift(minimum);