[不使用MIN / MATH功能]
问题要求我创建包含2个参数的函数。第一个是数组,第二个参数是字符串“Minimum
”或“Maximum
”。当我不知道如何将参数作为函数中的字符串输入时,这让我感到困惑。所以我决定创建2个类似的函数extremeValue(vector, maximum)
和extremeValue(vector, minimum)
(我仍然不知道我是否可以这样做)。
这是我extremeValue(vector, maximum)
的代码。
所以我的方法是创建与vector[i]
具有相同值的数组,而不是使用if语句来查看它是否大于该向量。但是,代码不起作用。 :(
var vector = [3, 1, 1]
var maximum
//------------this function give us the vector with all same value---------------//
function set(value, len) {
var arr = [];
for (var i = 0; i < len; i++) {
arr.push(value);
}
return arr;
}
//---------------------------------------------------//
//---------------------------------------------------//
function extremeValue(vector, maximum) {
var answer = "";
for (var count = 1; count++; count < vector.length) {
if (set(vector[count], vector.length) > vector)
answer += vector[count] + "is maximum"
}
return answer
}
//---------------------------------------------------//
console.log(extremeValue(vector, maximum))
答案 0 :(得分:3)
您可以使用Math
个功能。 Math.min将返回最小数量的传递数字。您不能直接在数组上调用这些函数,因此,您可以使用apply
调用这些函数并将array
作为参数传递给函数。
Math.min()
函数返回零或更多数字中的最小值。
Math.max
如下:
// array: The source array
// type: 'max' or 'min' to find Maximum or Minimum number
var getNum = function(array, type) {
return Math[type].apply(null, array);
};
var arr = [1, 3, 35, 12];
document.write('Max: ' + getNum(arr, 'max'));
document.write('<br />Min: ' + getNum(arr, 'min'));
&#13;
<强>更新强>
他们不允许我们使用min max function
您可以使用数组方法获取最大值和最小值。按升序对数组进行排序,然后数组中的第一个元素最小,最后一个元素最大。
// array: Source array
// type: 'max' or 'min'
var getNum = function(array, type) {
// Sort the array by ascending order
array.sort(function(a, b) {
return a < b;
});
return type === 'max' ? array[0] : array[array.length - 1];
};
var vector = [233, 10, 32543, 54321];
var max = getNum(vector, 'max');
var min = getNum(vector, 'min');
document.write('Max: ' + max);
document.write('<br />Min: ' + min);
&#13;
答案 1 :(得分:3)
这也应该有用!希望它有助于兄弟。
var arr = [2 ,4 ,56, 23, 10];
var max = arr.reduce(function(x,y){
return (x > y) ? x : y;
});
var min = arr.reduce(function(x,y){
return (x < y) ? x : y;
});
console.log('Max: '+ max);
console.log('Min: '+ min);
答案 2 :(得分:2)
你可以这样做:
function extremeValue(my_arr, min_max) {
var retval, i, len;
for(i=0,len=my_arr.length; i < len; i++) {
if (min_max == 'minimum') {
retval = (my_arr[i] < retval ? my_arr[i] : retval);
} else {
retval = (my_arr[i] > retval ? my_arr[i] : retval);
}
}
return retval;
}
然后你会这样称呼:
console.log(extremeValue(vector, 'maximum'));
console.log(extremeValue(vector, 'minimum'));
答案 3 :(得分:2)
如果不使用Math
或任何其他javascript函数,您可以找到数组的max
和min
值,如下所示。
var arr = [2, 3, 5, 10, 2, -9, 3];
alert("Max value is " + arrayMaxMin(arr, "Max"));
alert("Min value is " + arrayMaxMin(arr, "Min"));
function arrayMaxMin(array, selector) {
var val = ""; // variable to hold the current max/min value.
for (var i = 0; i < array.length; i++) {
if (selector == "Min") {
if (array[i] < val) {
val = arr[i];
}
} else if (selector == "Max") {
if (array[i] > val) {
val = arr[i];
}
}
}
return val;
}
&#13;
答案 4 :(得分:0)
没有内置数学最小值/最大值方法:
let minMaxValues = (arr) => {
let maxValues;
let minValues;
for (let i = 0; i < arr.length; i++) {
// check first value with all iterater
if(arr[i] < arr[1]){
minValues = arr[i];
}
// check last value with all iterater
if(arr[i] > arr[arr.length-1]){
maxValues = arr[i];
}
}
console.log(minValues);
console.log(maxValues);
}
minMaxValues([100, 20, 30, 10, 50]);