在Javascript中从数组中获取最小值?
数组的值如下所示:在Javascript中从数组中获取最小值?,javascript,arrays,min,Javascript,Arrays,Min,数组的值如下所示: [0] = 1.5 [1] = 4.5 [2] = 9.9. 如何返回数组中的最小值?Jon Resig演示了如何通过扩展数组原型并调用底层方法来实现这一点,不幸的是,该方法不接受数组,而是接受数量可变的参数: Array.min = function( array ){ return Math.min.apply( Math, array ); }; 然后: var minimum = Array.min(array); 更新:使用Darin的/John Re
[0] = 1.5
[1] = 4.5
[2] = 9.9.
如何返回数组中的最小值?Jon Resig演示了如何通过扩展数组原型并调用底层方法来实现这一点,不幸的是,该方法不接受数组,而是接受数量可变的参数:
Array.min = function( array ){
return Math.min.apply( Math, array );
};
然后:
var minimum = Array.min(array);
更新:使用Darin的/John Resig答案,请记住您不需要为
min
指定此参数,因此Math.min.apply(null,arr)
可以正常工作
或者您可以对数组进行排序,得到值#1:
[2,6,7,4,1].sort()[0]
[!]但如果不提供自定义数字排序功能,这只能在一种非常有限的情况下工作:正数小于10。看看它会如何破裂:
var a = ['', -0.1, -2, -Infinity, Infinity, 0, 0.01, 2, 2.0, 2.01, 11, 1, 1e-10, NaN];
// correct:
a.sort( function (a,b) { return a === b ? 0 : a < b ? -1: 1} );
//Array [NaN, -Infinity, -2, -0.1, 0, "", 1e-10, 0.01, 1, 2, 2, 2.01, 11, Infinity]
// incorrect:
a.sort();
//Array ["", -0.1, -2, -Infinity, 0, 0.01, 1, 11, 1e-10, 2, 2, 2.01, Infinity, NaN]
var a=[“”,-0.1,-2,-无穷大,无穷大,0,0.01,2,2.0,2.01,11,1,1e-10,NaN];
//正确:
a、 排序(函数(a,b){返回a==b?0:a
而且,数组也会发生相应的更改,这可能不是您想要的 找到最小值的最简洁的表达代码可能是:
const arr=[14,58,20,77,66,82,42,67,42,4]
const min=Math.min(…arr)
console.log(min)
我发现返回数组最小值的最简单方法是在Math.min()函数上使用Spread运算符
返回Math.min(…justPrices);
//在给定的示例中返回1.5
可能是更简单的方法吗
假设justPrices在价值方面是混合的,所以你不知道最小的价值在哪里
justPrices[0] = 4.5
justPrices[1] = 9.9
justPrices[2] = 1.5
使用排序
justPrices.sort();
然后它会帮你把它们整理好。(也可以按字母顺序排列)然后将数组按升序排列
justPrices[0] = 1.5
justPrices[1] = 4.5
justPrices[2] = 9.9
然后,您可以通过第一个索引轻松获取
justPrices[0]
我发现这比上面建议的更有用,因为如果你需要最低的3个数字作为例子呢?您还可以切换它们的排列顺序,更多信息请访问
函数最小值(){
if(参数[0]数组实例)
参数=参数[0];
返回Math.min.apply(数学,参数);
}
函数最大(){
if(参数[0]数组实例)
参数=参数[0];
返回Math.max.apply(数学、参数);
}
最小值=最小值(10,11,12,13);
var max=最大值([10,11,12,13]);
日志(“最小值:+min+”,最大值:+max)代码>如果使用下划线或Lodash,则可以使用这种简单的函数管道获得最小值
_.chain([7, 6, -1, 3, 2]).sortBy().first().value()
// -1
您还具有.min
功能
_.min([7, 6, -1, 3, 2])
// -1
假设您拥有以下阵列:
var arr = [1, 2, 3];
ES6方式:
var min = Math.min(...arr); //min=1
ES5方式:
var min = Math.min.apply(null, arr); //min=1
如果您使用D3.js,则有一个方便的函数可以执行相同的操作,但会忽略未定义的值,并检查自然顺序:
d3.max(数组[,访问器])
使用自然顺序返回给定数组中的最大值。如果
数组为空,返回未定义的。一个可选的访问函数
可以指定,这相当于调用array.map(访问器)
在计算最大值之前
与内置的Math.max不同,此方法忽略未定义的值;
这对于忽略丢失的数据很有用。此外,元素是
使用自然顺序而不是数字顺序进行比较。例如
字符串[“20”,“3”]的最大值为“3”,而
数字[20,3]是20
这是D3V4的源代码:
export default function(values, valueof) {
var n = values.length,
i = -1,
value,
max;
if (valueof == null) {
while (++i < n) { // Find the first comparable value.
if ((value = values[i]) != null && value >= value) {
max = value;
while (++i < n) { // Compare the remaining values.
if ((value = values[i]) != null && value > max) {
max = value;
}
}
}
}
}
else {
while (++i < n) { // Find the first comparable value.
if ((value = valueof(values[i], i, values)) != null && value >= value) {
max = value;
while (++i < n) { // Compare the remaining values.
if ((value = valueof(values[i], i, values)) != null && value > max) {
max = value;
}
}
}
}
}
return max;
}
导出默认函数(值,valueof){
var n=值。长度,
i=-1,
价值
最大值;
if(valueof==null){
而(++i=value){
最大值=最大值;
而(++imax){
最大值=最大值;
}
}
}
}
}
否则{
而(++i=value){
最大值=最大值;
而(++imax){
最大值=最大值;
}
}
}
}
}
返回最大值;
}
ES6是未来的道路。
arr.reduce((a, b) => Math.min(a, b));
我更喜欢这种形式,因为它很容易推广到其他用例中我想我有一个简单易懂的解决方案,只使用javaScript的基础知识
function myFunction() {
var i = 0;
var smallestNumber = justPrices[0];
for(i = 0; i < justPrices.length; i++) {
if(justPrices[i] < smallestNumber) {
smallestNumber = justPrices[i];
}
}
return smallestNumber;
}
函数myFunction(){
var i=0;
var smallestNumber=justPrices[0];
对于(i=0;i
变量smallestNumber
被设置为justPrices
的第一个元素,并且for循环在数组中循环(我只是假设您知道for循环是如何工作的;如果不知道,请查找它)。如果数组中的一个元素小于当前的smallestNumber
(它首先是第一个元素),它将替换它的值。当整个数组经过循环时,smallestNumber
将包含数组中的最小数。var数组=[2,3,1,9,8];
var array =[2,3,1,9,8];
var minvalue = array[0];
for (var i = 0; i < array.length; i++) {
if(array[i]<minvalue)
{
minvalue = array[i];
}
}
console.log(minvalue);
var minvalue=数组[0];
对于(var i=0;i if(array[i]这里的代码将检测数字数组中的最小值
//function for finding smallest value in an array
function arrayMin(array){
var min = array[0];
for(var i = 0; i < array.length; i++){
if(min < array[i]){
min = min;
}else if (min > array[i]){
min = array[i + 1];
}else if (min == array[i]){
min = min;
}
}
return min;
};
(如果
结果从:min=min
更改为min=array[i]
如果你想麻木
var fooArray = [1,10,5,2];
var foo = arrayMin(fooArray);
const findMin = (arr, min, i) => arr.length === i ? min :
findMin(arr, min = arr[i] < min ? arr[i] : min, ++i)
const applyToArray = (func, array) => func.apply(Math, array)
applyToArray(Math.min, [1,2,3,4]) // 1
applyToArray(Math.max, [1,2,3,4]) // 4
Distances.push([1.3, 1, 2]); // Array inside an array.
Distances.sort();
Distances[0] // The closest distance or the smallest number of distance. (array).