判断数组为空、含有某值,判断数据类型,判断空对象

news/2024/4/25 19:53:16

👉js中判断空数组和空对象的方法_js 空数组_EntheosLee的博客-CSDN博客 

👉JavaScript判断数组是否为空、 判断数据类型_javascript判断数组为空_webhyx的博客-CSDN博客 

 👉如何判断js数组是否为空_js判断数组为空_CodeChanningAz的博客-CSDN博客 

目录

一、js判断数组是否为空

  方法一:  arr.length

方式二:arr == true不为空

二、js判断数组是否含有某个值

  方法一:  arr.indexOf()

  方法二:  for循环结合if判断

  方法三: arr.find(callback)   

   方法四: arr.includes() ES6新方法。

 三、判断数据类型:toString 最完美的方法

四、判断空对象

1. JSON.stringify()

2. 判断数组的长度/对象key的长度

空数组 :Array.isArray()+length()

空对象:Object.prototype.isPrototypeOf() + keys().length


一、js判断数组是否为空

  方法一:  arr.length

let arr = [];
if (arr.length == 0){console.log("数组为空")
}else {console.log("数组不为空")
}

方式二:arr == true不为空

let arr1 = [];
if(arr1 == true){console.log("arr1不为空");
}else{console.log("arr1为空");
}//arr1为空

二、js判断数组是否含有某个值

  方法一:  arr.indexOf()

if (arr.indexOf(2) != -1){console.log("数组含有2")
}else {console.log("数组不含2")
}

  方法二:  for循环结合if判断

for (let i = 0;i < arr.length;i++){if (arr[i] === 2){console.log("数组含有2")}
}

  方法三: arr.find(callback)   

arr.find(value => {if (value === 2){console.log("数组含有2")}
})

   方法四: arr.includes() ES6新方法。

         数组中含有某值返回true,没有返回false。

let arr = [1,2,3,4];
if(arr.includes(2)){console.log("数组中有2");
}else{console.log("数组中无2");
}

 三、判断数据类型:toString 最完美的方法

        toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。

        对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

Object.prototype.toString.call(’’) ; // [object String]
Object.prototype.toString.call(1) ; // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全局对象 global 的引用

四、判断空对象

1. JSON.stringify()

通过判断空数组和空对象的json.stringify返回值与"[]“、”{}"是否相等判断。

 	  const emptyArr = [];const emptyObj = {};console.log(JSON.stringify(emptyArr) === "[]"); //trueconsole.log(JSON.stringify(emptyObj) === "{}"); //true

注:toString()和String方法对空数组和空对象的转换结果和JSON.stringify不一样:

(toString和String方法的结果一致)

	  console.log(emptyArr.toString()); // [object object]console.log(emptyObj.toString()); // [object object]

2. 判断数组的长度/对象key的长度

空数组 :Array.isArray()+length()

        使用isPrototypeOf()方法和数组的length()方法判断一个值 :1.是数组;2.为空。
        isPrototype()的用法:objA.isPrototypeOf(objB) ,
        即判断对象A(objA)是否为对象B(objB)的原型链上的原型对象,如:若要判断一个变量a是否为数组,可以使用
        Array.prototype.isPrototypeOf(a)来判断,值为true\false(也可以用Array.isArray()判断是否为数组)
        接下来可以进行空数组验证:

	  const emptyArr = [];console.log(Array.isArray(emptyArr) && emptyArr.length === 0); //验证为数组且为空

空对象:Object.prototype.isPrototypeOf() + keys().length

        同样需要判断:1.是对象;2.为空

        对象没有length属性,但是可以通过keys()方法获得对象内key的数组,所以

const emptyObj = {};
console.log(Object.prototype.isPrototypeOf(emptyObj) && emptyObj.keys(obj).length === 0);//验证为对象且为空

https://www.xjx100.cn/news/306115.html

相关文章

leecode 数据库:570. 至少有5名直接下属的经理

导入数据&#xff1a; Create table If Not Exists Employee (id int, name varchar(255), department varchar(255), managerId int); Truncate table Employee; insert into Employee (id, name, department, managerId) values (101, John, A, None); insert into Employee …

Python自然语言处理:NLTK入门指南

Python自然语言处理&#xff1a;NLTK入门指南 一、Python自然语言处理简介1. 什么是自然语言处理&#xff08;NLP&#xff09;2. Python在NLP中的应用3. 为什么选择使用Python进行NLP 二、NLTK介绍1. NLTK是什么2. NLTK的历史和现状3. NLTK的安装和配置4. NLTK的基本功能分词&a…

Aztec network即将集成Compound Defi项目

1. 引言 日前&#xff0c;Compound宣布将在2022年2季度上线Aztec network的zk.money中。 Aztec Network定位为以太坊的L2隐私扩容方案&#xff0c;号称为&#xff1a;Layer 2 for the internet of money。 通过名为DeFi Aggregation的process&#xff0c;Aztec可支持cheap pr…

【本地模式】第一个Mapreduce程序-wordcount

【本地模式】&#xff1a;也就是在windows环境下通过hadoop-client相关jar包进行开发的&#xff0c;我们只需要通过本地自己写好MapReduce程序即可在本地运行。 一个Maprduce程序主要包括三部分&#xff1a;Mapper类、Reducer类、执行类。 map阶段&#xff1a;将每一行单词提…

网工视角看基础网络,原来这么与众不同

大家好&#xff0c;我是老杨。 前两天去华为生态大会刚回来&#xff0c;颇为感慨。 感慨万物互联的世界越来越大&#xff0c;网络渗透度也越来越极致化。 网络很大&#xff0c;非常大&#xff0c;但在网工眼里&#xff0c;网络复杂又美妙&#xff0c;有着外行人难以理解的魅…

基于springboot+vue的校园任务订单配送管理系统

随着我国教育制度的改革的发展&#xff0c;各大高校的学生数量也在不断的增加。当前大学生的生活和消费习惯等导致他们更喜欢通过网络来获取自己想要的商品和服务&#xff0c;这也是导致当前校园配送盛行的主要原因。为了能够让更多的学生享受到校园配送的服务&#xff0c;我们…

数据更新了,但视图并没有更新

&#x1f449;vue中数据改变&#xff0c;视图不更新的原因以及解决方法&#xff08;强制更新视图&#xff09;_在使用vue开发中如果数据发生变化而视图没有更新的原因是什么怎么解决_小太阳...的博客-CSDN博客 目录 1.某些方法操作数组 2.对象属性的添加或删除 a.动态添加一…

单词拼写检查textblob模块spellcheck方法

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 单词拼写检查 textblob模块 spellcheck方法 [太阳]选择题 关于python代码说法错误的一项是&#xff1a; from textblob import Word myWordsuccessfulee print("【显示】myWord …