js求最大值最小值
比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,代码如下:
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,minimal-ui">
<title>document</title>
</head>
<body>
<input type="number" id="text" value="">
<input type="button" id="btn" value="提交">
</body>
<script>
var text = document.getElementById("text");
var btn = document.getElementById("btn");
btn.onclick = function(){
var v = text.value;
spl(v);
};
function spl(num){
var str = num.split("");
str.sort(func); //排序
function func(i, j){
return i-j;
}
// var max = parseInt(str[str.length-1]); //方法一:将数组中的字符转成整型
// var min = parseInt(str[0]);
var max = str[str.length-1]; //方法二:获取到最大值最小值的字符,然后把计算表达式转成字符串
var min = str[0];
var m = eval(max+"-"+min); //eval方法计算字符串形式的表达式
var n = eval(max+"+"+min);
console.log(max+"-"+min+"="+m+";"+max+"+"+min+"="+n);
}
</script>
</html>
另外的求最大值方法如下:
方法一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
//最小值 Array.prototype.min = function () { var min = this [0]; var len = this .length; for ( var i = 1; i < len; i++){ if ( this [i] < min){ min = this [i]; } } return min; } //最大值 Array.prototype.max = function () { var max = this [0]; var len = this .length; for ( var i = 1; i < len; i++){ if ( this [i] > max) { max = this [i]; } } return max; } |
如果你是引入类库进行开发,害怕类库也实现了同名的原型方法,可以在生成函数之前进行重名判断:
1
2
3
4
5
|
if ( typeof Array.prototype[ 'max' ] == 'undefined' ) { Array.prototype.max = function () { ... ... } } |
方法二:
用Math.max和Math.min方法可以迅速得到结果。apply能让一个方法指定调用对象与传入参数,并且传入参数是以数组形式组织的。恰恰现在有一个方法叫Math.max,调用对象为Math,与多个参数
1
2
3
4
5
6
|
Array.max = function ( array ){ return Math.max.apply( Math, array ); }; Array.min = function ( array ){ return Math.min.apply( Math, array ); }; |
但是,John Resig是把它们做成Math对象的静态方法,不能使用大神最爱用的链式调用了。但这方法还能更精简一些,不要忘记,Math对象也是一个对象,我们用对象的字面量来写,又可以省几个比特了。
1
2
3
4
5
6
7
8
|
Array.prototype.max = function (){ return Math.max.apply({}, this ) } Array.prototype.min = function (){ return Math.min.apply({}, this ) } [1,2,3].max() // => 3 [1,2,3].min() // => 1 |
方法三:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function getMaximin(arr,maximin) { if (maximin== "max" ) { return Math.max.apply(Math,arr); } else if (maximin== "min" ) { return Math.min.apply(Math, arr); } } var a=[3,2,4,2,10]; var b=[12,4,45,786,9,78]; console.log(getMaximin(a, "max" )); //10 console.log(getMaximin(b, "min" )); //04 |
方法四:
1
2
3
|
var a=[1,2,3,5]; alert(Math.max.apply( null , a)); //最大值 alert(Math.min.apply( null , a)); //最小值 |
多维数组可以这么修改:
1
2
3
4
|
var a=[1,2,3,[5,6],[1,4,8]]; var ta=a.join( "," ).split( "," ); //转化为一维数组 alert(Math.max.apply( null ,ta)); //最大值 alert(Math.min.apply( null ,ta)); //最小值 |
js求最大值最小值的更多相关文章
- html标签内部简单加js 一维数组求最大值 最小值两个值位置和数字金字塔图形
html标签内部,简单加js <a href=""></a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...
- C++数组或vector求最大值最小值
可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...
- Day_11【集合】扩展案例5_对list集合对象中的元素进行反转,求最大值最小值,求元素i在list集合中首次出现的索引,将oldvalue替换为newvalue
分析以下需求,并用代码实现 定义MyArrays工具类,该工具类中有以下方法,方法描述如下: 1.public static void reverse(ArrayList<Integer> ...
- C++中Vector求最大值最小值
vector<int> v: 最大值: int max = *max_element(v.begin(),v.end()); 最小值: int min = *min_element(v.b ...
- 【C++】Vector求最大值最小值
最大值: int max = *max_element(v.begin(),v.end()); 最小值: int min = *min_element(v.begin(),v.end());
- 求最大值最小值的方法 时间复杂度O(n)
#include<iostream> #include <iostream> #include <bitset> #include <ctime> us ...
- MapReduce求最大值最小值问题
import java.io.File; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import ...
- POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53703 Accepted: 25237 ...
- js求数组的最大值--奇技淫巧和笨方法
写这篇文章的原因 我目前做的项目很少用到算法,于是这方面的东西自然就有点儿生疏.最近的一次编码中遇到了从数组中获取最大值的需求,当时我不自觉的想到了js的sort()函数,现在想来真是有些“罪过”,当 ...
随机推荐
- 18B20驱动小经验
在写命令时P14拉高在最后 在读命令时P14在拉低后拉高
- 后台启动mysql
https://blog.csdn.net/codemacket/article/details/77719323
- 解决 Cannot uninstall 'pyparsing' 问题
参考 pyparsing 无法卸载导致安装 matplotlib 出错 解决 Cannot uninstall 'pyparsing' 问题 在安装 pydot 时遇到依赖 pyparsing 无法更 ...
- Vue-admin工作整理(三):路由
1.router-link和router-view组件 router-link组件实际上是封装了一个a标签(链接标签),里面有一个重要属性:“to”,它的值是一个路径,其路径对应的渲染组件,要在路由列 ...
- 关于 Expression is not assignable 错误
1.在 Build Phases中导入 UIKit.framework 2.在pch中导入头文件 #import <UIKit/UIKit.h> 3.写一个分类 即可解决 贴出分类代码 ...
- xampp集成环境下重置mysql的密码
第一步:打开两个命令行工具,都进入到你的xampp安装目录下的mysql下的bin目录,如我安装的位置是D:xampp/mysql/bin: 第二步:在完成第一步的情况下,输入:mysqld --sk ...
- vue--简化项目逻辑属性
computed属性对数据变化是实时响应的 因此当项目中某个数值发生变化,并且要在别的地方引用这个数值时,computed即可派上用场 来看一个例子: html部分: <div id=" ...
- UI组件--element-ui合计行在横向滚动条下面的解决方法
使用element-ui合计功能, 因列数较多, 产生横向滚动条: 但是合计行却在滚动条下面, 拖动滚动条合计行不会跟着横向滚动. 在当前页面添加以下样式: <style lang='less' ...
- 模板引擎ejs入门学习
1:利用 NPM 安装 EJS 很简单 npm install ejs 2:安装完成肯定就是使用了 var template = ejs.compile(str, options); template ...
- PYTHON -- 基础3
1.数据类型 1.int 类型 用于计算 1.1 bit_length() 转换为2进制的最小位置 有效的 i = 5 print(i.bit_length()) i 二进制 i.bit_length ...