首页 > 编程语言 >在JavaScript的if判断中,关于数组Array的相关思考

在JavaScript的if判断中,关于数组Array的相关思考

时间:2023-04-25 11:08:44浏览次数:39  
标签:console log JavaScript bool 数组 false Array array

结论:在if判断中,无法直接使用Array转Boolean的方法判断数组是否为空数组

let array = [];
// 中间进行N步操作之后
// ...
if(array){
	console.log("数组为空数组");
}
if(array == []){
	console.log("数组为空数组");
}
if(array == 0){
	console.log("数组为空数组");
}
if(array == ""){
	console.log("数组为空数组");
}

以上判断方法是错误的。

以下是思考过程:

空数组

首先,声明一个空数组:

const array = [];
与数组的比较

众所周知,在JavaScript中,数组是引用类型,所以:

let bool;
bool = array == [];
console.log(bool); // false
bool = array === [];
console.log(bool); // false
与数字的比较

众所周知,引用类型在与基本类型进行比较时,会先将其转换成基本数据类型,然后进行比较:

bool = array == 0;
console.log(bool); // true
bool = array != 0;
console.log(bool); // false
与字符串的比较

字符串与数字同属基本数据类型,所以仍然会发生类型转换之后的比较:

bool = array == "";
console.log(bool); // true
bool = array != "";
console.log(bool); // false
// 增加一个打印,后面会对比使用
console.log(array.toString()); // ""
与Boolean的比较

Boolean与数字、字符串同属基本数据类型,所以仍然会发生类型转换之后的比较:

bool = array == true;
console.log(bool); // false
bool = array == false;
console.log(bool); // true

非空数组

在数组中push一个空字符串:
array.push("");

此时,数组与数字的比较:

bool = array == 0;
console.log(bool); // true
bool = array != 0;
console.log(bool); // false

此时,数组与字符串的比较:

bool = array == "";
console.log(bool); // true
bool = array != "";
console.log(bool); // false

此时,数组与Boolean的比较:

bool = array == true;
console.log(bool); // false
bool = array == false;
console.log(bool); // true
将数组中的值替换为0:
array.pop();
array.push(0)

此时,数组与数字的比较:

bool = array == 0;
console.log(bool); // true
bool = array != 0;
console.log(bool); // false

此时,数组与字符串的比较,就有点反直觉:

bool = array == "";
console.log(bool); // false
bool = array != "";
console.log(bool); // true

解:console.log(array.toString()); // "0"

此时,数组与Boolean的比较:

bool = array == true;
console.log(bool); // false
bool = array == false;
console.log(bool); // true
剩下还有数组中多个项,比如["", 0]这种情况,本文不再讨论。

End~~

标签:console,log,JavaScript,bool,数组,false,Array,array
From: https://blog.51cto.com/u_16087807/6223563

相关文章

  • JavaScript回调函数
    一种场景js需要等待一个函数执行完后再执行另一个函数或者其他的操作。本编以最简单的例子来说明回调函数的执行过程。回调函数备注上就是以函数对象作为参数进行传递。demo<!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>......
  • JavaScript 正则表达式
    基本使用 //定义正则表达式 constreg=/^\d{4}-\d{1,2}-\d{1,2}$/; conststr="2020-11-11"; //验证字符串是否符合规则 reg.test(str);元字符^表示开始部分等于xxx$表示结束部分等于xxx[]表示字符串中存在中括号中定义的字符,可以使用连字符,如a-z表示可以匹......
  • D. Pashmak and Parmida's problem 树状数组
    ParmidaisaclevergirlandshewantstoparticipateinOlympiadsthisyear.Ofcourseshewantsherpartnertobeclevertoo(althoughhe’snot)!ParmidahaspreparedthefollowingtestproblemforPashmak.Thereisasequenceathatconsistsofnintege......
  • 数据结构之“线性表(数组)”
    前言:线性表:几个具有相同特性的数据元素的有限序列,线性表在逻辑上是线性结构,也就是连续的一条直线顾名思义“线性表”成一条线的表,在IT领域的数据结构中也有很多能看到的线性表,如“人员花名册”,“网络商品”,“图书名单系统”等等,都是一个个信息紧跟着排好供我们选择浏览等等~但这些......
  • Java-基础篇【数组、方法、面向对象基础.】
    1:数组引用类型,不是基本数据类型2:静态初始化数组111 ......
  • 面试最常问的数组转树,树转数组 c++ web框架paozhu实现
    刚毕业同学,找工作常被问二维数组转树,树转二维数组需要支持无限层级实现,如果你了解这个语言那么实现起来还要一番思考c++web框架paozhu使用需要实现数据库表数据到前台菜单实现,就是这种功能二维数组转树,树转二维数组保存时候树二维数组,展示时候树树状。这个技术难点在于无......
  • LeetCode 周赛 342(2023/04/23)容斥原理、计数排序、滑动窗口、子数组 GCB
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,我是小彭。前天刚举办2023年力扣杯个人SOLO赛,昨天周赛就出了一场Easy-Easy-Medium-Medium的水场,不得不说LeetCode是懂礼数的......
  • TypeScript 学习笔记 — 数组常见的类型转换操作记录(十四)
    获取长度lengthtypeLengthOfTuple<Textendsany[]>=T["length"];typeA=LengthOfTuple<["B","F","E"]>;//3typeB=LengthOfTuple<[]>;//0取第一项FirstItemtypeFirstItem<Textendsany[]>......
  • web前端pdf.js预览pdf实例创建报错:Array. prototype` contains unexpected enumerable
    使用pdf.min.js是预览pdf文件,但是在实例化时异常报错,下面是实例化的代码varloadingTask=window.pdfjsLib.getDocument(url);console.log(loadingTask);this.pageNum=1;this.pageRendering=false;this.pageNumPending=null;loadingTask.promise.then((pdfDoc_)=>......
  • Array对象
      ......