博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 判断是不是空、值是否存在
阅读量:4702 次
发布时间:2019-06-10

本文共 1856 字,大约阅读时间需要 6 分钟。

判断数组是否存在某个值:

  1. Array.indexOf(val) > -1 //存在 (缺陷:一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相等运算符(===)进行判断,这会导致对NaN的误判。)
  2. Array.includes(val)

判断对象是否存在某个字段:

  1. obj["key"] != undefined
    (缺陷: 如果这个key定义了,并且就是很2的赋值为undefined)
  2. !("key" in obj)
  3. obj.hasOwnProperty("key")
  4. typeof item.editFlag === "undefined"

判断是否为空

JavaScript本身没有判断一个变量是不是空值的函数,因为变量有可能是string,object,number,boolean等类型,类型不同,判断方法也不同。所以在文章中写了一个函数,用以判断JS变量是否空值,如果是undefinednull''NaNfalse0[]{} ,空白字符串,都返回true,否则返回false

function isEmpty(v) {    switch (typeof v) {    case 'undefined':        return true;    case 'string':        if (v.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;        break;    case 'boolean':        if (!v) return true;        break;    case 'number':        if (0 === v || isNaN(v)) return true;        break;    case 'object':        if (null === v || v.length === 0) return true;        for (var i in v) {            return false;        }        return true;    }    return false;}

测试

isEmpty()              //trueisEmpty([])            //trueisEmpty({})            //trueisEmpty(0)             //trueisEmpty(Number("abc")) //trueisEmpty("")            //trueisEmpty("   ")         //trueisEmpty(false)         //trueisEmpty(null)          //trueisEmpty(undefined)     //true

typeof

typeof undefined === 'undefined'typeof null === 'object'//Booleantypeof true === 'boolean'//Numbertypeof 1 === 'number'//Stringtypeof '111' === 'string'//Arraytypeof ['a','b'] === 'object'//Objecttypeof {a:1,b:2} === 'object'

判断数组方法:

  1. instanceof Array
  2. objName.constructor==Array (缺陷:在不同iframe中创建Array并不共享prototype;继承Array也为true,如:b.prototype=new Array)
  3. lengthsplicelength不可枚举(缺陷:object.propertyIsEnumerable('length')
  4. Array.isArray(objName)
  5. obj.prototype.toString.call(objName)==='[object Array]'

转载于:https://www.cnblogs.com/conglvse/p/10455295.html

你可能感兴趣的文章
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>
bootstrap模态框和select2合用时input无法获取焦点(转)
查看>>
MockObject
查看>>
BZOJ4516: [Sdoi2016]生成魔咒(后缀自动机)
查看>>
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
adb shell am 的用法
查看>>
iOS10 UI教程视图和子视图的可见性
查看>>
FindChildControl与FindComponent
查看>>
中国城市json
查看>>
android下载手动下载Android SDK
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>
leetcode133 - Clone Graph - medium
查看>>
一点小基础
查看>>
UNET学习笔记2 - 高级API(HLAPI)
查看>>
"ORA-00942: 表或视图不存在 "的原因和解决方法[转]
查看>>
Oauth支持的5类 grant_type 及说明
查看>>