Javascript 运算符、流程控制语句和数组

【三】运算符

【1】算数运算符

(1)分类

  • 加减乘除:±*/
  • 取余:%
  • 和python不一样的点:没有取整//

(2)特殊的点

  • 只要NaN参与运算得到的结果也是NaN
  • null转换成0,undefined转换成NaN

【2】比较运算符

(1)分类

  • 大于等于小于:>=<
  • 相等不相等:== !==
  • 大于等于小于等于:>= <=

(2)特殊

2.1强相等
  • 强相等:===
  • 弱相等(类型自动转换):==
"1" == 1	//true
"1" === 1	//false
2.2null
null == 0	//false
null === 0	//false
null >= 0 	//true
null <= 0 //true
null==undefined	//true
null===undefined	//false
2.3NaN
  • 检查一个值是否为非数字
NaN == NaN //false
isNaN(NaN) //true
isNaN() //true
isNaN(undefined) //true
isNaN(Infinity) // false
isNaN("bruce") // true
NaN == 'bruce'//false
2.4Infinity
  • 检查一个值是否为有限数
Infinity == Infinity // true
isFinite(Infinity) // false
isFinite(10) // true

【3】逻辑运算符

(1)分类

  • 与&&
  • 或||
  • 非!

(2)示例

5 && 'a' && 12.1 	//12.1
0 || null || "a"	//'a'

【4】赋值运算符

(1)分类

  • = 等于
  • += 加等于
  • -= 减等于
  • *= 乘等于
  • /= 除等于
  • %= 取余等于
  • ++ 递加
  • – 递减

【5】一元运算符

  • 和c或c++等语言一样
  • python中没有

(1)i++、i–

  • 先赋值再计算
var a = 100;
var b = a++;	//100
var c = a++;	//101
console.log(a)	//102

(2)++i、–i

  • 先计算再赋值
var a = 100;
var b = --a;	//99
var c = --a;	//98
console.log(a);	//98

【6】运算优先级

  • 从高到低

  • () -> 一元 -> 算数 -> 比较 -> 逻辑 -> 赋值

【四】流程控制语句

【1】if else

(1)语法

  • 习惯性缩进,可以不
if (condition) {do something}
else if (condition){do something}
...
else {do something
}

(2)示例

var identify = 'normal';
if (identify == 'super'){console.log('hello super')}
else if (identify == 'admin'){console.log('hello admin')}
else {console.log('hello normal')
};

【2】switch case

(1)语法

  • 注意:必须写break
    • 否则再满足当前条件的情况下还会继续执行其他条件判断
switch (variable) {case value1:do somethingbreak;case value1:do somethingbreak;...    default:do somethingbreak
};

(2)示例

var identify = 'normal';
switch (identify) {case 'super':console.log('hello super');break;case 'admin':console.log('hello admin')break;default:console.log('hello normal')break
};

【3】for

(1)语法

for (初始化表达式; 条件表达式; 更新表达式) {do something;
};

(2)示例

var array = [11, 22, 33]
for (var i = 0; i < array.length; i++) {console.log(i, array[i]);
};
//0 11
//1 22
//2 33
  • 可以和pythonfor i in range很像
    • 但是i确实索引,或者键值
var array = [11, 22, 33]
for (var i in array) {console.log(i, array[i]);
};
//0 11
//1 22
//2 33
  • for of 作用和python的for in一样
var array = [11, 22, 33];
for (var i of array) {console.log(i);
};
//11
//22
//33

【4】while

(1)语法1

while condition {do something;
};

(2)语法2

do {do something;
}while (condition);

(3)示例

  • 两种语法的区别:先判断还是先执行
var i = 0;
while (i++ < 3) {console.log(i);
};
//1
//2
//3
var i = 0;
do {console.log(i);
}while (i++ < 3);
//0
//1
//2
//3

【5】三元运算符号

  • 和c语言一样,和python不一样
    • python:true if contion else fale

(1)语法

condition ? true : false

(2)示例

var flag = 1
var indetify = flag == 0 ? "super" : "admin"
var flag = 2;
var indentify = flag == 0 ? "super" : flag == 1 ? "admin" : "normal"; 
# python中
flag = 2
identify = "super" if flag == 0 else "admin" if flag ==1 else "normal"
print(identify)

【五】数组

  • 它是一种有序集合,可以通过索引访问和操作其中的元素。

【1】定义数组

var array = [];
var array = new Array();

【2】查看类型

typeof array;
//'object'

【3】常用方法

(1)元素个数

  • .length
var array = [11, 22, 33];
array.length;	//3

(2)遍历

  • for of和python的for in作用一样
var array = [11, 22, 33];
for (var i of array) {console.log(i);
};
//11
//22
//33
  • .forEach():
    • forEach 方法接受一个回调函数作为参数,该回调函数将在数组的每个元素上被调用。
    • 回调函数接受三个参数:当前元素的值、当前元素的索引和正在遍历的数组本身。
//一个参数
var array = [11, 22, 33];
array.forEach(function(value) {console.log(value);            
});
//11
//22
//33
//两个参数
var array = [11, 22];
array.forEach(function(value, index) {console.log(value, index);
});
//11 0
//22 1
//三个参数
var array = [11, 22];
array.forEach(function(value, index, element) {console.log(value, index, array);
});
//11 0 (2) [11, 22]
//22 1 (2) [11, 22]
//函数另一种写法
var array = [11, 22];
array.forEach((value, index, array) => {console.log(value, index, array);
});
//11 0 (2) [11, 22]
//22 1 (2) [11, 22]

(3)增加

  • python中:

    • append()尾部加
    • extend()内部是for+append
    • insert()指定位置加
  • +:没有+号,合并出来的是字符串,和python不同

  • .concat():原数组不变

  • .unshift():开头插入元素

  • .push():末尾添加元素

var array1 = [111,333];
var array2 = [222];
var array3 = array1 + array2;
console.log(array3); //111,333222
var array1 = [11, 33];
var array2 = [22, 44];
var array3 = array1.concat(array2);
console.log(array1); //(2) [11, 33]
console.log(array3); //(4) [11, 33, 22, 44]
var array1 = [11, 33];
var array2 = [22, 44];
array1.unshift(55, 66);
console.log(array1); //(4) [55, 66, 11, 33]
array1.unshift(array2);
console.log(array1); //(5) [Array(2), 55, 66, 11, 33]
var array1 = [11, 33];
var array2 = [22, 44];
array1.push(55, 66);
console.log(array1); //(4) [11, 33, 55, 66]
array1.push(array2);
console.log(array1); //(5) [11, 33, 55, 66, Array(2)]

(4)删除

  • 在python中

    • pop:索引
    • remove:值
    • del :索引
  • .pop()

    • 和python不一样
    • 不能指定索引位置
  • .shift()

    • 删除第一个元素
var array1 = [11, 22, 33];
var array2 = array1.pop(0); //索引参数没用
console.log(array1);	// [11, 22]
console.log(array2);	//33
var array1 = [11, 22, 33]; 
var array2 = array1.shift(2);
console.log(array1); //(3) [22, 33]
console.log(array2); //11

(5)插入、删除、替换

  • .splice()
    • 起始索引,改变个数,要操作元素
var array = [11, 33, 55];
array.splice(0, 2); //删除前两个
console.log(array); 
//[55]
array.splice(2, 0, "aa", "cc"); //索引位置2后插入两个元素,不会报错
console.log(array); 
//(3) [55, 'aa', 'cc']
array.splice(2, 0, ["bb", "dd"]); //修改第三个元素
console.log(array);
//(4) [55, 'aa', Array(2), 'cc'] 

(6)查

  • .valueOf():获取数组原始值
  • .indexOf():查看元素所在位置第一个索引
  • .lastIndexOf():查看元素所在位置最后一个索引
var array = [11, 22];
var value = array.valueOf();
console.log(value); //(2) [11, 22]
var array = [1, 456, 789, 1]
var first = array.indexOf(1); //0
var last = array.lastIndexOf(1); //3
typeof first; //'number'

(7)排序

  • 默认情况下,会将数组元素转换为字符串,并按照 Unicode 编码进行排序。

  • .sort()

    • 默认升序
    • 可以自定义排序:
var array = [11, "a", "Z", 22]
array.sort();
console.log(array); //(4) [11, 22, 'Z', 'a']
//如果返回负数,表示 a 应该在 b 之前;如果返回零,表示 a 和 b 的顺序不变;如果返回正数,表示 b 应该在 a 之前
var array = [11, 456, 15, 2];
/*array.sort(function(a, b) {return a - b;
});*/
array.sort((a, b) => (a - b));
console.log(array);
// (4) [2, 11, 15, 456]
var array = [11, "a", "Z", 2];
array.sort(function(a, b) {if (typeof a === "number" && typeof b === "number") {return a - b; // 数字类型的比较} else {return String(a).localeCompare(String(b)); // 字符串类型的比较}
});
console.log(array);
//(4) [2, 11, 'a', 'Z']
var array = [12, "aa", 15];
array.reverse();
console.log(array);
//) [15, 'aa', 12]

(8)数组转换为字符串

  • .join()
    • 和python不一样,会类型自动转换
    • 参数位置也不一样
    • python的整型列表会报错,这个不会
  • .toString()
var array = [11, 22, 33];
var str = array.join(", ");
console.log(str); //11, 22, 33
# python
array = [11, 22, 33]
print(", ".join(array))
# expected str instance, int found
var array = [11, 22, 33];
var str = array.toString();
console.log(str); //11,22,33

【4】高级函数

(1)map

  • 应用函数映射数组元素
array.map(callback(element, index, array), thisArg);
  • 语法

    • callback是一个回调函数,用于定义对每个元素的操作。它可以接受三个参数:

      • element:当前正在处理的数组元素。

      • index(可选):当前正在处理的元素的索引。

      • array(可选):调用 map() 方法的数组。

    • thisArg(可选):在执行回调函数时使用的 this 值。

var array = [1, 3, 5];
var newArray = array.map(i => i*i);
console.log(newArray); 
//(3) [1, 9, 25]

(2)filter

  • 根据条件筛选数组元素
array.filter(callback(element, index, array), thisArg);
var array = [1, 2, 3, 4];
var newArray = array.filter(i => i%2);
console.log(newArray);
//(2) [1, 3]

(3)every

  • 检查数组中的所有元素是否满足指定条件
array.every(callback(element, index, array), thisArg);
var array = [1, 2, 3, 4];
var flag = array.every(i => i%2);
console.log(flag);
//false

(4)some

  • 判断数组是否有元素满足条件
array.some(callback(element, index, array), thisArg);
var array = [1, 2, 3, 4];
var flag = array.some(i => i%2);
console.log(flag);
//true

(5)reduce

  • 将数组中的所有元素按照指定的方式进行累积计算,最终得到一个单个的值。
array.reduce(callback(accumulator, currentValue, index, array), initialValue); 
  • callback是一个回调函数,用于定义累积计算的逻辑。它可以接受四个参数:

    • accumulator:累积的结果,也可以看作上一次回调函数的返回值。

    • currentValue:当前正在处理的数组元素。

    • index(可选):当前正在处理的元素的索引。

    • array(可选):调用 reduce() 方法的数组。

  • initialValue(可选):作为第一次调用回调函数时的初始值。

var array = [11, 22, 33]
var res = array.reduce((total, num) => (total + num), 44);
console.log(res);
//110

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oauth2基本概念

1.什么是oauth2 OAuth2.0介绍 OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他 们数据的所有内容。OAuth在全世界得到广泛应…

信息系统项目管理师(高项)—学习笔记

第一章信息化发展 1.1 信息与信息化 1.1.1 信息 信息是物质、能量及其属性的标示的集合&#xff0c;是确定性的增加。 它以物质介质为载体&#xff0c;在传递和反映世界各种事物存在方式、运动状态等的表征。 信息不是物质&#xff0c;也不是能力&#xff0c;它以一种普遍…

c++ qt五子棋联网对战游戏

C qt 五子棋联网对战游戏运行环境 Qt 6.6.0 (MSVC 2019 64-bit) 代码文件编码格式 ANSI txt文件编码格式 ANSI 测试用例 服务端端口被占用 通过客户端端口被占用 通过客户端连接服务端 服务端中途断开 通过客户端连接服务端 客户端中途断开 通过服务端没有启动 客户端启动…

编译遇到 AT_CHECK 未定义

mmdet/ops/nms/src/nms_cuda.cpp:4:23: error: ‘AT_CHECK’ was not declared in this scope; did you mean ‘DCHECK’?4 | #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")| ^~~~~~~~我在编译旧版本 m…

svn客户端下载、安装、使用

下载、使用 打开360软件管家&#xff0c;选怎宝库&#xff0c;搜索svn&#xff0c;点击安装 可以修改安装路径 使用 在桌面右键弹出菜单&#xff0c;点击 输入地址&#xff0c;点击ok 输入用户名、密码 &#xff0c;等待检出完成

代码随想录算法训练营day38 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪心&#xff0c;贪心没有状态推导&#xff0c;而是从局部直接选最优的。 动态规划问题五步曲 确定dp数…

【Linux】C语言实现超级简单进度条!你不会还不知道吧?

目录 1. 基础准备&#x1f38d; 1.1 \r&&\n 1.2 缓冲区 2. 进度条1.0&#x1f940; 2.1 Process.h 2.2 Process.c 2.3 Main.c 2.4 Makefile 3.进度条 2.0&#x1faba; 3.1 Process.h 3.2 Process.c 3.3 Main.c 1. 基础准备&#x1f38d; 1.1 \r&&…

关于信号强度单位dB和dBm区别

dB&#xff0c;dBm 都是功率增益的单位&#xff0c;不同之处如下&#xff1a; 一、dB 是一个相对值&#xff0c;表示两个量的相对大小关系&#xff0c;没有单位。当考虑甲的功率相比于乙功率大或小多少个dB时&#xff0c;按下面的计算公式&#xff1a;10log&#xff08;甲功率/…

WPF真入门教程29--MVVM常用框架之MvvmLight

1、MVVM模式回顾 关于mvvm模式的基础知识&#xff0c;请看这2个文章&#xff1a; WPF真入门教程23--MVVM简单介绍 WPF真入门教程24--MVVM模式Command命令 做过VUE开发或微信小程序开发的伙伴&#xff0c;就知道MVVM模式&#xff0c;核心就是数据驱动控件&#xff0c;全栈开…

基于SpringBoot的家教管理系统

基于SpringBootVue的家教管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台主页 家教 个人中心 管理员界面 摘要 本文介绍了基于SpringBoot框架开发的家…

如何正确设置CrossOver之偏好设置 crossover软件使用 crossover设定 crossover软件安装

CrossOver的核心是Wine&#xff0c;Wine是一个能在多种POSIX-compliant操作系统&#xff08;如&#xff1a;Linux、Mac OS等&#xff09;上运行Windows应用的兼容层。Wine不是Windows的模拟工具&#xff0c;它是把Windows API 调用翻译成为动态的 POSIX 调用&#xff0c;实现Li…

Docker部署Mysql8.0.2

1、 搜索Mysql docker search mysql 2、 精准搜索Mysql8.0.2 docker search mysql:8.0.2 3、 拉取镜像 docker pull mysql:8.0.2 4、 启动镜像 docker run --name mysql -id -p 3306:3306 -v /temp/mysql/log:/logs -v /temp/mysql/data:/var/lib/mysql -e MYSQL_ROOT…

03 基本指令 1

linux的命令选项都可以同时叠加多个 ls 语法&#xff1a;ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;命令列出该目录下所有子目录与文件。对于文件&#xff0c;列出文件名以及其他信息 常用选项&#xff1a; -a 列出目录下所有文件&#xff0c;包括.开头的…

电子元件分销商

Top 10 Active Electronic Parts Distributors List – 2022 / 2023 一家从众多制造商那里收购所有电子元件并销售给客户的公司被称为电子元件分销商。 A company that acquires all electronic components from numerous manufacturers and sells them to customers from a si…

2024/2/17 图论 最短路入门 dijkstra 1

目录 算法思路 Dijkstra求最短路 AcWing 849. Dijkstra求最短路 I - AcWing 850. Dijkstra求最短路 II - AcWing题库 最短路 最短路 - HDU 2544 - Virtual Judge (vjudge.net) 【模板】单源最短路径&#xff08;弱化版&#xff09; P3371 【模板】单源最短路径&#xf…

Stable Diffusion——文生图界面参数讲解与提示词使用技巧

Clip终止层数 什么是Clip CLIP&#xff08;Contrastive Language-Image Pretraining&#xff09;是由OpenAI于2021年开发的一种语言图像对比预训练模型。其独特之处在于&#xff0c;CLIP模型中的图像和文本嵌入共享相同的潜在特征空间&#xff0c;这使得模型能够直接在图像和文…

thinkphp5.1 phpexcel 批量导入导出

1.批量导入 public function importExcel(){$authority $this->getUserAuthority(order_input, batch_import);if ($authority[code] ! 0) {return json($authority);}$file request()->file(files);if(empty($file)){return printMsg(-1, "请上传文件");}/…

开发技术-Java 获取集合中元素下标并移动至指定位置

1. 说明 某些业务需要特定的元素在列表的最后或者指定位置展示。 2. 代码 import lombok.AllArgsConstructor; import lombok.Data;import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream;Data AllArgsConstructor class Student {St…

CMNet:Contrastive Magnification Network for Micro-Expression Recognition 阅读笔记

AAAI 2023的一篇文章&#xff0c;东南大学几位老师的工作&#xff0c;用于做微表情识别中的运动增强工作&#xff0c; 以下是阅读时记录的笔记。 摘要&#xff1a; However,existing magnification strategies tend to use the features offacial images that include not onl…

喝多少瓶汽水

喝多少瓶汽水 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果: 题目描述&#xff1a; 水已知1瓶汽水1元&#xff0c;2个空瓶可以换⼀瓶汽水&#xff0c;输入整数n&#xff08;n>0&#xff09;&#xff0c;表示n元钱&#xff0c;计算可以多少汽水&a…