-
2021-01-30 13:39:33
我从览页些求时是过解些这确如目前例总站回广随后台拿到一段数据,是一段数组对象是能览调不页新代些事几求事都时学下是事功过发,解,格式如下:
[{name: 'a', state: 0}, {name: 'b', state: 1}, {name: 'c', state: 2}]
我需要在循环中判断它的state来给定不同的文字提示
例如:
0------就是办理中
1------就是已结办
2------就是已中止
我的代码如下:
v-for="(item, index) in formatInfo"
:key="index"
class="result-progressBox">
{{item.state}}export default {
data () {
return {
info: this.$store.state.IndexStore.Progress.cardSchedule //假设这里得到的格式就会上面的数组对象格式
}
}
computed: {
formatInfo () {
this.info.map((current, index) => {
switch (current.state) {
case '0': current.state = '办理中'
break
case '1': current.state = '已办结'
break
case '2': current.state = '已中止'
break
}
})
}
},
}
我这么写得地开级还思层似未屏别。域一插式近址发应是不到我想要的效果,看不到‘办理中’等状态 只能渲染出来1 或者 0 或者 2### 问分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一求相题描述
问题出现的朋不功事做时次功好来多这开制的请一例农在环境背景及自己尝试过哪些方是能览调不页新代些事几求事都时学下是事法
相关代码
// 请和第,。年过事工宗据指数遍互业经搞断果会把代码文本粘贴到下方(请勿用图片抖要支圈者器说是事天开的。年后编定功口小发还应久剑代替代码)
你期览页些求时是过解些这确如目前例总站回广随待的结果是什么?实际看到的错误信是能览调不页新代些事几求事都时学下是事功过发,解息又是什么?
更多相关内容 -
判断字符串类型的几种方法
2021-06-05 18:11:44判断字符串类型的几种方法 1,如果是判断该字符串或者该字是不是中文的话,用以下代码: String s1; if(s1.matches("[\\u4E00-\\u9FA5]+")){ System.out.print("s1是中文"); } 2,如果是判断该字符串或者该字...判断字符串类型的几种方法
1,如果是判断该字符串或者该字是不是中文的话,用以下代码:
String s1; if(s1.matches("[\\u4E00-\\u9FA5]+")){ System.out.print("s1是中文"); }
2,如果是判断该字符串或者该字是不是所有的标点符号的话,用以下代码:
String s1; if(s1.matches("[\\pP\\p{Punct}]")){ System.out.print("s1是标点符号"); }
3,如果是判断该字符串或者该字是不是数字的话,用以下代码:
String s1; if(s1.matches("[0-9]+")){ System.out.print("s1是数字"); }
4,如果是判断该字符串或者该字是不是英文或英文字母的话,用以下代码:
String s1; if(s1.matches("[a-zA-Z]+")){ System.out.print("s1是英文"); }
-
JavaScript 判断是否为数字的几种方式
2022-03-29 21:53:36js判断是否为数字方式很多: typeof、instanceof、Number.isNumber ...使用typeof判断对象是不是基本类型number,比如: let num = 1; typeof num === 'number'; // true 使用instanceof判断对象是不是包装类Number喜欢博主的文章,欢迎关注、点赞👍、收藏⭐️、留言📝支持,谢谢大家
文章目录
js判断是否为数字的方式很多:typeof
、instanceof
、Number.isNumber
parseInt
、parseFloat
isNaN
、isFinite
Number.isNaN
、Number.isFinite
- 正则表达式
- 终极方案
我们逐一介绍,希望能帮到大家。
1. typeof、instanceof、Number.isInteger
typeof
判断值是不是基本类型number
,比如:let num = 1; typeof num === 'number'; // true
instanceof
判断值是不是包装类Number
,比如:let num = new Number(1); num instanceof Number; // true
Number.isInteger
判断值是否是整数:Number.isInteger(1); // true Number.isInteger('1'); // false Number.isInteger(1.1); // false
这几种方式的缺点,都是只能基于类型判断,无法判断字符串是否是数值。
2. parseInt、parseFloat
这个方法的特点,一句话,返回字符串开头最长的有效数字。
我们可以用
!isNaN(parseFloat(value))
来判断字符串是否是数值。let str1 = '123'; let str2 = 'abc'; !isNaN(parseFloat(str1)); // true,是数字 !isNaN(parseFloat(str2)); // false,不是数字
parseInt
和parseFloat
解析的时候遇到非法字符结束,返回解析到的数值。也就是说只要字符串头部是合法数值,那么就能解析出数值,哪怕整体不是数值。比如123abc
,会被解析程123
。因此,上面的判断方式还不够严谨,下面的终极方案是比较严谨的方式。
3. isNaN、isFinite
在介绍这两个方法之前,先讲下
NaN
,它表示Not-a-Number
。两个NaN
无法直接比较相等,因为我们只知道它不是数值,是啥不确定,也就无法比较相等。NaN === NaN; // false NaN == NaN; // false Object.is(NaN, NaN); // false
isNaN(value)
,如果ToNumber(value)
的结果为NaN
返回true
,否则返回false
。isFinite(value)
,如果ToNumber(value)
的结果为数值,且不等于Infinity
或-Infinity
返回true
,否则返回false
。
isNaN
和isFinite
都会先将传入的值转成数值,再进行判断。ToNumber
的规则跟直接使用Number
函数一样。一些非数值在类型转换的时候都能转成数值,比如:Number(true); // 1 Number(false); // 0 Number(null); // 0 Number(''); // 0
对
null
、true
、false
、''
使用isNaN
结果都是false
,但是它们本身不是数值,因此不能单独使用isNaN
。4. Number.isNaN、Number.isFinite
这两个方法跟对应的全局方法是不一样的。
Number.isNaN(value)
,如果value
为NaN
返回true
,否则返回false
。Number.isFinite(value)
,如果value
为数值,且不等于Infinity
或-Infinity
返回true
,否则返回false
。
区别是全局方法会有强制类型转换,而这两个方法没有强制类型转换:
Number.isNaN(null); // true Number.isNaN(true); // true Number.isNaN(false); // true Number.isNaN(''); // true
可以看,由于没有类型转换,所以
Number.isNaN
判断null
、true
、false
、''
的结果都是true
。但是“副作用”是数字字符串也会得到
true
:Number.isNaN('123'); // true
Number.isNaN
等价与:Number.isNaN = Number.isNaN || function(value) { return typeof value === "number" && isNaN(value); }
而
Number.isFinite
等价于:if (Number.isFinite === undefined) Number.isFinite = function(value) { return typeof value === 'number' && isFinite(value); }
因此,这两个方法本质上也是基于类型的,没法判断一个字符串是否为数值。
5. 正则表达式
let exp = /^[+-]?\d*(\.\d*)?(e[+-]?\d+)?$/; exp.test('+1.9'); // true exp.test('-.1e11'); // true
这个正则可以判断整数、浮点数、正负数和科学计数法。
不过我觉得判断是否是数值用正则,有点小题大做了。
6. 终极方案(推荐)
我们先看方案:
!isNaN(parseFloat(value)) && isFinite(value);
这其实是jquery中
$.isNumeric
的源码,多么简洁且优雅。接下来我们看看它的原理,我们以字符串
123abc
为例,我们应该得到false
。parseFloat('123abc')
得到123
;!isNaN(123)
得到true
;isFinite('123abc')
得到false
;- 最终结果为
false
。
单独使用
!isNaN(parseFloat(value))
会将123abc
当成数值,所以用isFinite
额外判断一次,isFinite
的另一个作用是排除无穷数。!isNaN(parseFloat(Infinity)); // true !isNaN(parseFloat(Infinity)) && isFinite(Infinity); // false
而且,因为
parseFloat
的解析是纯字符串解析,没有类型转换,所以不会将null
、true
、false
、''
当成数值。!isNaN(parseFloat(null)) && isFinite(null); // false !isNaN(parseFloat(true)) && isFinite(true); // false !isNaN(parseFloat(false)) && isFinite(false); // false !isNaN(parseFloat('')) && isFinite(''); // false
妙,妙不可言。
7. 结语
对这几个方法的介绍并不全面,因为我们探讨的主题是“判断值是否为数值”。这几个方法任何一个单独拎出来,都能讲一篇,有时间再跟大家分享。
-
判断js数据类型的四种方法,以及各自的优缺点(很详细哦)
2018-03-20 15:17:17首先我们简单的说一下js中的几种数据类型数据类型分为基本类型和引用类型:基本类型:String、Number、Boolean、Null、Undefined引用类型:Object、Array、Date、Function、Error、RegExp、Math、Number、String、...首先我们简单的说一下js中的几种数据类型
数据类型分为基本类型和引用类型:
基本类型:String、Number、Boolean、Null、Undefined
引用类型:Object、Array、Date、Function、Error、RegExp、Math、Number、String、Boolean、Globle。
然后判断数据类型的方法一般可以通过:typeof、instanceof、constructor、toString四种常用方法
1、typeof:(可以对基本类型做出准确的判断,但对于引用类型,用它就有点力不从心了)
typeof 返回一个表示数据类型的字符串,返回结果包括:number、boolean、string、object、undefined、function等6种数据类型。
typeof 可以对JS基本数据类型做出准确的判断(除了null),而对于引用类型返回的基本上都是object, 其实返回object也没有错,因为所有对象的原型链最终都指向了Object,Object是所有对象的`祖宗`。 但当我们需要知道某个对象的具体类型时,typeof 就显得有些力不从心了。
注意:typeof null会返回object,因为特殊值null被认为是一个空的对象引用
2、instanceof
判断对象和构造函数在原型链上是否有关系,如果有关系,返回真,否则返回假
function Aaa(){ } var a1 = new Aaa(); //alert( a1 instanceof Aaa); //true判断a1和Aaa是否在同一个原型链上,是的话返回真,否则返回假 var arr = []; alert( arr instanceof Aaa);//false
我们来看一下
var str = 'hello'; alert(str instanceof String);//false var bool = true; alert(bool instanceof Boolean);//false var num = 123; alert(num instanceof Number);//false var nul = null; alert(nul instanceof Object);//false var und = undefined; alert(und instanceof Object);//false var oDate = new Date(); alert(oDate instanceof Date);//true var json = {}; alert(json instanceof Object);//true var arr = []; alert(arr instanceof Array);//true var reg = /a/; alert(reg instanceof RegExp);//true var fun = function(){}; alert(fun instanceof Function);//true var error = new Error(); alert(error instanceof Error);//true
从上面的运行结果我们可以看到,基本数据类型是没有检测出他们的类型,但是我们使用下面的方式创建num、str、boolean,是可以检测出类型的:
var num = new Number(123); var str = new String('abcdef'); var boolean = new Boolean(true);
3、constructor:查看对象对应的构造函数
constructor 在其对应对象的原型下面,是自动生成的。当我们写一个构造函数的时候,程序会自动添加:构造函数名.prototype.constructor = 构造函数名
function Aaa(){ } //Aaa.prototype.constructor = Aaa; //每一个函数都会有的,都是自动生成的 //Aaa.prototype.constructor = Aaa;
判断数据类型的方法
从上面的测试中我们可以看到,undefined和null是不能够判断出类型的,并且会报错。因为null和undefined是无效的对象,因此是不会有constructor存在的var str = 'hello'; alert(str.constructor == String);//true var bool = true; alert(bool.constructor == Boolean);//true var num = 123; alert(num.constructor ==Number);//true // var nul = null; // alert(nul.constructor == Object);//报错 //var und = undefined; //alert(und.constructor == Object);//报错 var oDate = new Date(); alert(oDate.constructor == Date);//true var json = {}; alert(json.constructor == Object);//true var arr = []; alert(arr.constructor == Array);//true var reg = /a/; alert(reg.constructor == RegExp);//true var fun = function(){}; alert(fun.constructor ==Function);//true var error = new Error(); alert(error.constructor == Error);//true
同时我们也需要注意到的是:使用constructor是不保险的,因为constructor属性是可以被修改的,会导致检测出的结果不正确
可以看出,constructor并没有正确检测出正确的构造函数function Aaa(){ } Aaa.prototype.constructor = Aaa;//程序可以自动添加,当我们写个构造函数的时候,程序会自动添加这句代码 function BBB(){} Aaa.prototype.constructor = BBB;//此时我们就修改了Aaa构造函数的指向问题 alert(Aaa.construtor==Aaa);//false
4、Object.prototype.toString(可以说不管是什么类型,它都可以立即判断出)
toString是Object原型对象上的一个方法,该方法默认返回其调用者的具体类型,更严格的讲,是 toString运行时this指向的对象类型, 返回的类型
格式为[object xxx],xxx是具体的数据类型,其中包括:
String,Number,Boolean,Undefined,Null,Function,Date,Array,RegExp,Error,HTMLDocument,... 基本上所有对象的类型都可以通过这个方法获取到。
从这个结果也可以看出,不管是什么类型的,Object.prototype.toString.call();都可以判断出其具体的类型。var str = 'hello'; console.log(Object.prototype.toString.call(str));//[object String] var bool = true; console.log(Object.prototype.toString.call(bool))//[object Boolean] var num = 123; console.log(Object.prototype.toString.call(num));//[object Number] var nul = null; console.log(Object.prototype.toString.call(nul));//[object Null] var und = undefined; console.log(Object.prototype.toString.call(und));//[object Undefined] var oDate = new Date(); console.log(Object.prototype.toString.call(oDate));//[object Date] var json = {}; console.log(Object.prototype.toString.call(json));//[object Object] var arr = []; console.log(Object.prototype.toString.call(arr));//[object Array] var reg = /a/; console.log(Object.prototype.toString.call(reg));//[object RegExp] var fun = function(){}; console.log(Object.prototype.toString.call(fun));//[object Function] var error = new Error(); console.log(Object.prototype.toString.call(error));//[object Error]
接下来我们分析一下四种方法各自的优缺点不同类型的优缺点 typeof instanceof constructor Object.prototype.toString.call 优点 使用简单 能检测出引用类型 基本能检测所有的类型(除了null和undefined) 检测出所有的类型 缺点 只能检测出基本类型(出null) 不能检测出基本类型,且不能跨iframe constructor易被修改,也不能跨iframe IE6下,undefined和null均为Object 从上表中我们看到了,instanceof和constructor不能跨iframe,上面没有细说,所以下面我们直接上例子喽例:跨页面判断是否是数组
window.onload = function(){ var oF = document.createElement('iframe'); document.body.appendChild( oF ); var ifArray = window.frames[0].Array; var arr = new ifArray(); //alert( arr.constructor == Array ); //false //alert( arr instanceof Array ); //false alert( Object.prototype.toString.call(arr) == '[object Array]' ); //true };
从结果中可以看出,constructor和instanceof都没有正确的判断出类型,只有object.prototype.toString.call();正确判断出了
其实面试官也经常喜欢让说一种最简单的判断是数组的方法,记住喽是object.prototype.toString.call()哦!
好了,今天就分享这些了!
-
if语句判断真假的几种情况
2019-05-16 14:56:56于是深入地了解了下if语句的判断真假的几种情况,发现还真有点东西…(自己果然是菜鸡hhhhhhhh) 这个是书本上的 i = Root(T);//i 为int型,这里Root函数返回的是空格字符 if (!i) printf("树空,无根\n"); 这... -
VB中判断空的几种方法,Null, Missing, Empty, Nothing, vbNullString区别
2020-04-07 20:44:33vb6中存在几个虚幻的值:Null、Missing、Empty、Nothing、vbNullString。除了最后一个之外,每一个值都不能直接用...这种数据通常出现在三种情况下: (1)最简单的,函数直接返回Null给调用方。譬如 Function ... -
一句话木马上传常见的几种方法
2018-12-28 10:19:49一般文件内容验证使用getimeagesize()函数检测,会判断文件是否一个有效的文件图片,如果是,则允许上传,否则的话不允许上传。 制作图片木马: copy 1.jpg/b+2.php/a 3.jpg --------------------- 原文:... -
素数(质数)判断的五种方法
2021-04-23 16:49:08素数判断的五种方法 素数的介绍 素数定义 质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。... -
【MySQL】MySQL有几种锁
2020-03-29 22:48:11mysql官网上对于意向锁的解释中有这么一句话 “The main purpose of IX and IS locks is to show that someone is locking a row, or going to lock a row in the table.” 意思是说加意向锁的目的是为了表明某个... -
STM32复位类型及判断方法
2019-07-24 19:44:38STM32复位及通过函数判断是何种条件出发的复位 STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。 一、系统复位: 系统复位将复位所有寄存器至它们的复位状态。 当发生以下任一事件时,... -
7种内聚与7种耦合的类型及强弱关系
2021-04-20 09:26:36模块的内聚类型通常可以分为7种 ,根据内聚度从低到高排序。 类型 说明 偶然(巧合)内聚 指一个模块内的各处理元素之间没有任何联系。 例如:三条不相关的语句( move O to R , read file F , move S toT... -
JavaScript判断语句
2019-02-11 23:25:11一、比较运算 在js中,凡是运算都会有返回值 、&...js是一种弱类型语言,数据类型会相互转换。 ===的执行效率要高于==,因为后者需要进行数据类型的转换。 console.log(a = 2);//2 ... -
五种基本数据类型
2017-11-06 15:44:25今天学习js基础,就又拿出高程看了一遍这几种数据类型。书尤其是技术类的书,看第二遍总是比第一遍收货的更多。以前看第一遍的时候到后面几乎是糊里糊涂的看完了,现在从新看了一遍才发现写代码时遇到的问题在这里都... -
Qt 之connect 信号和槽函数连接的几种方法的总结(含signalmaper、lamda方式)
2019-09-10 23:38:23引用一个应用例子理解上述的几种方法: /* * 作者:张建伟 * 时间:2018年4月1日 * 简述:该Demo仅仅用于测试和演示Qt5与Qt4的连接方式以及最新的槽函数支持lambda表达式 */ #include "widget.h" #... -
java面试题26 java语言的下面几种数组复制方法中,哪个效率最高?
2019-11-28 10:34:19java面试题26 java语言的下面几种数组复制方法中,哪个效率最高? A for 循环逐一复制 B System.arraycopy C Array.copyOf D 使用clone方法 效率:System.arraycopy > clone > Arrays.copyOf > ... -
NLP中文句子类型判别和分类实现
2019-10-23 18:06:26一、中文句子类型主要类别 1、陈述句(statement) 2、特殊句(special) 3、疑问句(question) 二、中文句子类型简单分析 三、将句法分析与正则结合标注句子类型 四、句子类型调研及规则总结 五、中文句子... -
深入理解Java枚举类型(enum)
2017-05-13 18:27:14【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) ...深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解 -
实现AOP的几种方式
2018-05-15 15:00:17AOP是一种编程思想,是OOP编程思想的...AOP的实现有很多种,下面简单介绍几种。 测试AOP需要的一些基础类 Font.java package com.java.proxy; import lombok.Data; @Data public class Font { private St... -
Redis的9种数据类型
2018-11-01 09:53:57在具体描述这几种数据类型之前,我们先通过一张图了解下 Redis 内部内存管理中是如何描述这些不同数据类型的: 首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示... -
关于主键生成策略的几种方式
2019-04-01 15:09:39综合对比上述几种方案,每种方案都不完全符合我们的要求。所以Leaf分别在上述第二种和第三种方案上做了相应的优化,实现了Leaf-segment和Leaf-snowflake方案。 Leaf-segment数据库方案 第一种Leaf-segment方案... -
闲聊几句
2017-08-28 14:39:24最近一直在看《三体》这部小说,刚把第二部看完,具体就不剧透了,N多年没有看过科幻类型的书了,但这本对于个人的震撼还是挺大,如果有时间和精力的话,推荐大家读一下。 第二部中,印象最深刻的就是黑暗森林... -
电脑主板中bios的几个常见类型介绍
2016-02-21 00:29:39在使用U盘装系统的过程中总是需要对电脑的bios设置进行一些操作,那么关于bios你了解多少,下面就为大家介绍几种常见的Bios种类。 目前常见的主板bios主要有:Award BIOS、AMI BIOS和Phoenix BIOS这三种... -
前后端常见的几种鉴权方式
2018-01-03 15:53:31常见的授权四种授权方式HTTP Basic Authentication,session-cookie,token(jwt),OAuth(开放授权) -
JVM如何判断对象能否被回收
2019-12-16 16:11:57在java中大致有如下几种: •虚拟机栈(栈帧中的本地变量表)中引用的对象;(不知道栈帧是啥的看我另一篇文章, 运行时数据区 ) •方法区中类静态属性引用的对象; •方法区常量引用的对象; •本地... -
主存和Cache的几种映射方式
2019-02-19 18:09:55因为这才是他的有效数据位,还有问的是主存的标志位还是cache的标志位,还有就是块号和行号以及第几块一般是从0开始(一般题目会说,但是也可能不会说) 有一种情况就是告诉你cache的容量为16B这下你可以直接得出... -
JavaScript判断对象的类型
2013-08-20 14:02:21这几天看了些有关JavaScript判断对象类型的介绍,感觉比较好,但是都不太全。于是总结一下,主要有constructor属性、typeof操作符、instanceof操作符和Object.prototype.toString()方法这四个方式来判断对象的类型。 -
几种边缘检测算法对比及python代码实现
2019-07-28 18:29:13这里把参考到的几篇文章列一下: https://www.jianshu.com/p/2a06c68f6c14 https://blog.csdn.net/sunny2038/article/details/9170013 https://blog.csdn.net/sunny2038/article/details/9202641 ... -
Layui之templet超实用的几种用法【吊打官方文档】
2020-05-19 16:22:54“甭管好不好用,先好看再说”,产品经理一句话,阐述了我两年的心声(再现任公司已两年,依然是升职加薪无望的 攻城狮,哈哈 ~),相信有很多猿友跟我一样,看着自己写的优秀代码,不论是注释布局,效率逻辑都是...