我有以下功能
function min() {
var array = Array.prototype.slice.call(arguments);
array = array.length === 1 && isNumeric(array[0].length) ? array[0] : array;
var min = array[0];
var i, count;
for (i = 1, count = array.length; i < count; i++) {
if (array[i] < min) min = array[i];
}
return min;
},
我不明白为什么放入以下行,目的是什么?
array = array.length === 1 && isNumeric(array[0].length) ? array[0] : array;
答案 0 :(得分:3)
condition ? returnIfTrue : returnIfFalse
被称为三元运算符。array.length === 1 && isNumeric(array[0].length)
表示“如果array
有一个元素且第一个元素本身就是一个数组”。a = ternaryOperator
表示将a
设置为三元运算符的结果。这三者意味着您可以通过两种方式致电min
:
min(1, 2, 3)
或min([1, 2, 3])
。
答案 1 :(得分:2)
该行允许直接将数字作为参数传递或将单个数组作为第一个参数传递:
min(1,2,3);
min([1,2,3]);
答案 2 :(得分:1)
我会将此函数重构为
var min = (...args) => Array.isArray(args[0]) ? Math.min(...args[0]) : Math.min(...args);
document.write("<pre>" + min([1,2,3,4,-1]) + "</pre>");
document.write("<pre>" + min(1,2,-3,4,-1) + "</pre>");
答案 3 :(得分:-1)
您的代码令人困惑,请尝试做类似的事情
var min = 1000000;
var temp = 0;
if ( element < min){
temp = element;
min = element;
}