【JavaScript基础入门】05 JavaScript基础语法(三)

JavaScript基础语法(三)

目录

  • JavaScript基础语法(三)
    • 数组概述
      • 数组语法
      • 多维数组
    • 操作数组
      • 修改数组
      • 获取数组长度
      • 数组和字符串之间的转换
      • 添加和删除数组项
    • Null 和 Undefined
    • 字符串
      • 连接字符串
      • 字符串转换
      • 获取字符串的长度
      • 在字符串中查找子字符串并提取它
      • 转换大小写
      • 替换字符串的某部分
    • 转换成字符串
    • 转换成数值类型
    • 转换成布尔类型

数组概述

通过我们前面所学的我们可以知道如果我们要保存一个数据,我们可以用 var 关键字去定义一个变量,但是如果数据很多呢?难道我需要一个个去定义?比如一个班上很多人,我们 var name1 = "张三"; var name2 = "李四"; ... 一直这样定义下去?显然这是不科学的,而这也由此引出了我们的数组。首先我们来看看维基百科对于数组的定义:

在计算机科学中,数组数据结构(英语:array data structure),简称数组(英语:Array),是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该元素对应的存储地址。

最简单的数据结构类型是一维数组。例如,索引为 0 到 9 的 32 位整数数组,可作为在存储器地址 2000,2004,2008,…2036 中,存储 10 个变量,因此索引为 i 的元素即在存储器中的 2000+4×i 地址。数组第一个元素的存储器地址称为第一地址或基础地址。

数组语法

var myarray = new Array(1, 2, 3, 4, 5); // 创建数组同时赋值
// or
var myarray = [1, 2, 3, 4, 5]; // 直接输入一个数组(称“字面量数组”)

注:我们可以用上述两种方法创建数组,myarray 指的是定义的数组名,可以自己取,数组储存的数据可以是任何类型(数字,字符,布尔值等)。每一个值都有一个索引值,从 0 开始。比如:

var color = ["red", "green", "blue", "yellow"];
color[0]; // returns "red"
color[1]; // returns "green"
color[2]; // returns "blue"
color[3]; // returns "yellow"
color[4]; // returns undefined

多维数组

多维数组就是数组中还包含数组,我们可以一层一层的来看。比如:

var student = [["张三", "男", "18"],["李四", "女", "20"],
];student[0][2];  // returns "18"

操作数组

修改数组

修改数组中的元素内容也很简单,直接为它提供新值就可以了。比如:

var color = ["red", "green", "blue", "yellow"];
color[0] = "black";
color; // returns ["black", "green", "blue", "yellow"]

获取数组长度

同样的我们使用 length 来获取数组的长度。比如:

var color = ["red", "green", "blue", "yellow"];
color.length; // returns 4

数组和字符串之间的转换

通过 split() 方法,将字符串转换为数组。比如:

"1:2:3:4".split(":"); // returns ["1", "2", "3", "4"]
"|a|b|c".split("|"); // returns ["", "a", "b", "c"]

相反的我们通过 join() 方法将数组转换为字符串。比如:

["1", "2", "3", "4"].join(":"); // returns "1:2:3:4"
["", "a", "b", "c"].join("|"); // returns "|a|b|c"

注:我们同样可以使用 toString() 方法将数组转换为字符串,但是 join() 方法可以指定不同的分隔符,而 toString() 方法只能是逗号。

添加和删除数组项

在数组尾部添加一个或多个元素,使用 push() 方法。比如:

var arr = ["1", "2", "3", "4"];
arr.push("5", "6");
arr; // returns ["1", "2", "3", "4", "5", "6"]

使用 pop() 方法将删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,然后返回 undefined 值。比如:

var arr = ["1", "2", "3", "4"];
arr.pop(); // returns 4
arr; // returns ["1", "2", "3"]
var arr1 = [];
arr1.pop(); // returns undefined
arr1; // returns []

unshift()shift() 从功能上与 push()pop() 完全相同,只是它们分别作用于数组的开始,而不是结尾。大家可以直接在控制台自行尝试一番。

注:数组的方法其实还有很多,我们将在后续的课程中一一为大家讲解。

Null 和 Undefined

null 和 undefined 都表示无,但是也有一些区别。现在控制台上执行以下语句:

在这里插入图片描述

这里需要说明的是:== 是相等操作符,比较值是否相等,如果相等输出为 true,否则为 false。=== 是全等操作符,比较值和类型是否都相等,如果都相等输出为 true,否则为 false。通过我们在控制台中的实践可以发现,null 和 undefined 的值不等于 0,它们的值相等,但是类型不相等。undefined 表示所有没有赋值变量的默认值,而 null 则表示一个变量不再指向任何对象地址。

字符串

在前面的变量章节中,我们已经简单讲过字符串的基础知识,这里我们再拓展一下。我们前面讲过我们可以使用单引号或双引号,也可以在字符串中使用引号,只要不匹配包围字符串的引号即可。比如:

var carname = "shiyanlou";
var carname = "shiyanlou";
var answer = "I Love 'shiyanlou'";
var answer = 'I Love "shiyanlou"';

下面的代码将会出现错误,因为它会混淆浏览器和字符串的结束位置:

var x1 = 'I've got no right to take my place...';

聪明的你可能会觉得这样不行,我们就换种方法,比如:

var x1 = "I have got no right to take my place...";

或者:

var x1 = "I've got no right to take my place...";

没错这样做都是可行的方法,但是其实我们还有另外一种方法,使用转义符号。转义字符意味着我们对它们做一些事情,以确保它们在文本中被认可,而不是代码的一部分。在 JavaScript 中,我们通过在字符之前放一个反斜杠来实现这一点。试试这个:

var x1 = 'I\'ve got no right to take my place...';

常用的转义符:

在这里插入图片描述

连接字符串

我们通过 “+” 连接字符串,比如在控制台中输入下面的代码:

var one = "Hello,jack.";
var two = "I'm rose";
result = one + two;

最后控制台显示结果为:Hello,jack.I'm rose

如果我们在控制台输入的是 "jack"+18 思考一下会报错吗?要不再自己动手实践看看结果?结果是:浏览器很聪明的把数字转换成了字符串,最后结果为 "jack18"。另外输入 "20"+"19",最后的结果也是字符串 "2019"

字符串转换

我们可以通过 toString() 方法把数字转换成字符串。

var myNum = 123;
var myString = myNum.toString();
typeof myString;

也可以通过 Number() 对象把传递给它的字符串类型的数字转换为数字。

var myString = "123";
var myNum = Number(myString);
typeof myNum;

注:如果传递的不是纯数字的字符串,则返回的不是数字,而是 NaN(not a number)。

获取字符串的长度

通过 length 属性获取字符串的长度,结果返回一个数字。比如:

var myString = "hello world ";
myString.length;

上述代码在控制台中运行的结果为:12(除了字母还有两个空格)。

如果你要查找这个字符串的第一个字符,你可以这么做:

myString[0];

同样的你也可以查找到其他的字符,比如第五个字符,就是 myString[4],这是因为电脑是从 0 开始,而不是 1,因此我们都要执行减一操作。

在字符串中查找子字符串并提取它

  1. 有时候我们需要判断一个较长的字符串里面是否存在一个我们指定的较小的字符串,就比如我们要查找一段话里面是否包含一个词或者一个字,这个时候我们可以使用 indexof() 方法来完成,更详细的语法为:
str.indexOf(searchValue, fromIndex);

str 指的是我们需要查的较长的字符串,searchValue 表示我们指定的较小的字符串,fromIndex 表示调用该方法的字符串中开始查找的位置,是一个可选的任意整数值,也可以不写,默认是 0 表示从头开始查,fromIndex < 0fromIndex = 0 是一样的效果,表示从头开始查找整个字符串。如果 fromIndex >= str.length,则该方法的返回值为 -1。这里有个特殊的情况:就是如果被查找的字符串(searchValue)是一个空字符串,那么当 fromIndex <= 0 时返回 0,0 < fromIndex <= str.length 时返回 fromIndexfromIndex > str.length 时返回 str.length。这样说你可能不太明白,我们来实践一下看看实际效果:

"Blue Sky".indexOf("Blue"); // returns  0
"Blue Sky".indexOf("Ble"); // returns -1
"Blue Sky".indexOf("Sky", 0); // returns  5
"Blue Sky".indexOf("Sky", -1); // returns  5
"Blue Sky".indexOf("Sky", 5); // returns  5
"Blue Sky".indexOf("Sky", 9); // returns -1
"Blue Sky".indexOf("", 0); // returns  0
"Blue Sky".indexOf("", 5); // returns 5
"Blue Sky".indexOf("", 9); // returns 8

注:返回值指的是指定值第一次出现的索引,如果没有找到返回 -1。indexOf() 方法区分大小写,比如:

"Blue Sky".indexOf("blue"); // returns -1
"Blue Sky".indexOf("Blue"); // returns 0
  1. 当你知道字符串中的子字符串开始的位置,以及想要结束的字符时,slice() 方法可以用来提取它。比如:
"Blue Sky".slice(0, 3); // returns "Blu"

注:slice(strat,end),第一个参数 start 是开始提取的字符位置,第二个参数 end 是提取的最后一个字符的后一个位置。所以提取从第一个位置开始,直到但不包括最后一个位置。另外第二个参数也可以不写,不写代表某个字符之后提取字符串中的所有剩余字符。比如:

"Blue Sky".slice(2); // returns "ue Sky"

转换大小写

字符串方法 toLowerCase()toUpperCase() 字符串并将所有字符分别转换为小写或大写。比如:

var string = "I like study";
string.toLowerCase(); // returns "i like study"
string.toUpperCase(); // returns "I LIKE STUDY"

替换字符串的某部分

可以使用 replace() 方法将字符串中的一个子字符串替换为另一个子字符串。比如:

var string = "I like study";
string.replace("study", "sleep"); // returns "I like sleep"

注意这样只能替换第一个出现的字符串,如果字符串是类似 I like study study,那么第二个 study 不会被替换。

此时可以使用全局替换方法。

var string = "I like study study";
string.replace(/study/g, "sleep");
copy

注:字符串的操作方法其实还有很多,我们将在后续的课程中再为大家作深入讲解。

转换成字符串

几乎每个值都有 toString() 方法。比如在控制台输入以下代码:

var num = 8;
var numString = num.toString();
numString; // returns "8"
var result = true;
var resultString = result.toString();
resultString; // returns "true"

数值类型的 toString(),可以携带一个参数,输出对应进制的值。比如:

var num = 16;
console.log(num.toString()); // "16" 默认是10进制
console.log(num.toString(10)); // "16"
console.log(num.toString(2)); // "10000"
console.log(num.toString(8)); // "20"
console.log(num.toString(16)); // "10"

String() 函数。比如在控制台中输入以下代码:

var num1 = 8;
var num2 = String(num1);
num2; // returns "8"
var result = true;
var result1 = String(result);
result1; // returns "true"

注:因为有的值没有 toString() 方法,所以需要用 String(),比如 null 和 undefined。如下所示:

在这里插入图片描述

使用拼接字符串。比如在控制台中输入以下代码:

var num1 = 16;
var num2 = num1 + "";
num2; // returns "16"

转换成数值类型

Number() 可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回 NaN(not a number)。比如在控制台中依次输入以下代码:

var num1 = Number(true);
num1; // true 返回 1,false 返回 0var num2 = Number(undefined);
num2; // 返回 NaNvar num3 = Number(null);
num3; // 返回 0var num4 = Number("syl");
num4; // 返回 NaNvar num5 = Number("   ");
num5; // 如果是空字符串返回 0var num6 = Number(123);
num6; // 返回 123,如果是数字型的字符,返回数字var num7 = Number("123abc");
num7; // 返回 NaN

parseInt() 把字符串转换成整数。比如在控制台中依次输入以下代码:

var num1 = parseInt("12.3abc");
num1; // 返回 12,如果第一个字符是数字会解析知道遇到非数字结束,只取整,不是约等于var num2 = parseInt("abc123");
num2; // 返回 NaN,如果第一个字符不是数字或者符号就返回 NaNvar num3 = parseInt("");
num3; // 空字符串返回 NaN,但是 Number("")返回 0var num4 = parseInt("520");
num4; // 返回 520var num5 = parseInt("0xA");
num5; // 返回 10

另外值得注意的是,parseInt() 可以传递两个参数,第一个参数是要转换的字符串,第二个参数是要转换的进制。大家可以自行尝试一下。

parseFloat() 把字符串转换成浮点数。写法和 parseInt() 相似,主要有以下几个不同点:

  • parseFloat 不支持第二个参数,只能解析 10 进制数。
  • 如果解析的内容里只有整数,解析成整数。

例子:

parseFloat("10"); // returns 10
parseFloat("10.000"); // returns 10
parseFloat("10.01"); // returns 10.01
parseFloat("10"); // returns 10
parseFloat("10 hours"); // returns 10
parseFloat("aaa 10"); // returns NaN

执行减 0 操作。比如:

var n = "10";
var m = n - 0;
m; // returns 10

值得注意的是,如果该字符串不是纯粹的数字字符串,那么它执行减 0 操作后,虽然变成了一个数字类型,但是返回值为 NaN。比如:

var n = "abc";
var m = n - 0;
m; // returns NaN
typeof m; // returns "number"

转换成布尔类型

使用 Boolean() 函数。比如:

Boolean(123); // returns true
Boolean("abc"); // returns true
Boolean(null); // returns false
Boolean(undefined); // returns false
Boolean(NaN); // returns false
Boolean(0); // returns false
Boolean(""); // returns false
Boolean(false); // returns false
Boolean("false"); // returns true
Boolean(-1); // returns true

流程控制语句会把后面的值隐式转换为布尔类型。比如:

var message;
if (message) {//会自动把 message 转换成 false,最后打印结果为:我很好console.log("你好啊");
} else {console.log("我很好");
}

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

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

相关文章

代码随想录刷题笔记-Day13

1. 二叉树的层序遍历 102. 二叉树的层序遍历https://leetcode.cn/problems/binary-tree-level-order-traversal/层次遍历依靠队列的先进先出特点实现。 解题思路 层序遍历的本质就是对每一个pop出来的处理节点&#xff0c;处理后把他的左右节点放进去。 对于每一层来说&…

Hutool改变我们的coding方式(四)

Hutool改变我们的coding方式 1、随机工具RandomUtil2、唯一ID工具IdUtil3、身份证工具IdcardUtil4、信息脱敏工具DesensitizedUtil 测试代码地址&#xff1a;https://gitee.com/Augenstern-creator/kuang-study_-hutools 1、随机工具RandomUtil RandomUtil主要针对JDK中Rando…

技法和原理:如何找到你需要的菜单项?

你一定碰到过查找某个菜单项的场景&#xff0c;通常我们会使用类似于 GetMenuItemInfo 这样的菜单函数&#xff0c; 在这类函数中&#xff0c;有一个参数允许你指定要查找的菜单项目的信息&#xff1a;MF_BYPOSITION 或者 MF_BYCOMMAND。 至此&#xff0c;是不是很眼熟了。今天…

一定用得到的时频分析方法!广义S变换、小波变换、短时傅里叶变换(STFT)、Wigner-Ville 分布,直接运行!

适用平台&#xff1a;Matlab2020版本及以上 在实际应用中&#xff0c;时频分析通常与机器学习/深度学习技术结合&#xff0c;以提高故障识别的性能。时频分析可以捕捉信号在时间和频率上的瞬时变化&#xff0c;有助于检测到与故障相关的瞬时特征&#xff0c;如脉冲、振动或其它…

༺༽༾ཊ—Unity之-05-抽象工厂模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用 抽象工厂模式 创建 人物与宠物 模型&#xff0c; 首先资源商店下载 人物与宠物…

智能语音识别源码系统+语义理解+对话管理+语音合成 带完整的搭建教程

人工智能技术的不断发展&#xff0c;智能语音识别技术逐渐成为人们日常生活和工作中不可或缺的一部分。然而&#xff0c;目前市场上的智能语音识别产品大多存在一定的局限性&#xff0c;如识别率不高、功能单一等。为了解决这些问题&#xff0c;罗峰给大家分享一款基于智能语音…

Ps:段落面板

Ps菜单&#xff1a;窗口/段落 Window/Paragraph Ps菜单&#xff1a;文字/面板/段落面板 Type/Panels/Paragraph Panel 对于“点文本”&#xff0c;默认一行为一个段落。每按一次回车键&#xff0c;就多出一个段落。 对于“段落文本”&#xff0c;一段可能有多行&#xff0c;具体…

汽车网络安全管理体系框架与评价-汽车网络安全管理体系评价

当前 &#xff0c; 随若汽车联网产品渗透率、 智能传感设备搭载率的提升&#xff0c; 以及汽车与通信、互联网等行业的融合创新发展&#xff0c; 汽车行业面临愈发严峻的网络安全风险&#xff0c; 对消费者人身财产安全、 社会安全乃至国家安全产生威胁&#xff0c; 是产业发展…

多智能体强化学习--MAPPO(pytorch代码详解)

标题 代码详解Actor和Critic网络的设置 代码详解 代码链接&#xff08;点击跳转&#xff09; Actor和Critic网络的设置 基本设置&#xff1a;3个智能体、每个智能体观测空间18维。Actor网络&#xff1a;实例化一个actor对象&#xff0c;input-size是18Critic网络&#xff1…

产品解读 | 新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台&#xff0c;满足对海量数据的存储和复杂业务的处理需求。 同时在易用性方面持续深耕&#xff0c;降低用户开发和运维成本&#xff0c;让数据处理平民化&#xff0c;助力用户以更便捷、高效的方式去挖掘数…

Python tkinter (9) ——Menu控件

本文主要是Python tkinter Menu菜单控件介绍及使用示例。 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkinter (5…

计算机毕业设计 基于SpringBoot的校园闲置物品交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

多场景建模:腾讯3MN

3MN: Three Meta Networks for Multi-Scenario and Multi-Task Learning in Online Advertising Recommender Systems 背景 推荐领域的多场景多任务学习&#xff1a;维护单模型即可节省资源也可节省人力&#xff1b;各个场景的数据共享&#xff0c;理论上面学习是更加充分的 …

微信小程序Skyline在手机端不渲染的问题之一及其解决方式

问题&#xff1a;电脑端是skyline渲染&#xff0c;手机端是webview渲染?如何解? 开发者工具 当前渲染模式&#xff1a;Skyline 当进行预览时手机端却是: 请注意看轮播图的显示情况 请注意看轮播图的显示情况 请注意看轮播图的显示情况 从轮播图上来看,手机端是webview渲染…

“有国才有家”这个观点应该怎么理解?

​《有国才有家》这首歌由马仕健作词作曲&#xff0c;蒋国佳编曲&#xff0c;刘畅混音&#xff0c;马仕健演唱。 “家是最小国&#xff0c;国是千万家”。千百年来&#xff0c;“家国”这两个词一直紧紧联系在一起。“国家好&#xff0c;民族好&#xff0c;大家才会好”&#x…

【嵌入式学习】C++QT-Day3-C++基础

笔记 见我的博客&#xff1a;https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函…

Linux文件管理(下)

上上篇介绍了Linux文件管理的上部分内容&#xff0c;这次继续将 Linux文件管理的剩余部分说完。内容如下。 一、查看文件内容 1、cat 命令 1.1 输出文件内容 基本语法&#xff1a; cat 文件名称主要功能&#xff1a;正序输出文件的内容。 eg&#xff1a;输出 readme.txt文…

对Spring当中AOP的理解

AOP(面向切面编程)全称Aspect Oriented Programminge AOP就是把系统中重复的代码抽取出来&#xff0c;单独开发&#xff0c;在系统需要时&#xff0c;使用动态代理技术&#xff0c;在不修改源码的基础上&#xff0c;将单独开发的功能通知织入(应用)到系统中的过程&#xff0c;完…

慎投!这3本期刊诚信风险高,被警告和风险低的期刊选哪个?

近年来&#xff0c;学术界对学术诚信的关注越来越多&#xff0c;期刊的学术诚信风险也日益受到关注。科睿唯安在今年三月份剔除的35本SCI期刊中&#xff0c;绝大多数涉及学术诚信问题&#xff01;据官方介绍&#xff0c;其已正式开发了一款AI工具&#xff0c;可以锁定存在学术诚…

【JavaScript 基础入门】01 编程语言和计算机基础

编程语言和计算机基础 目录 编程语言和计算机基础1 - 编程语言1.1 编程1.2 计算机语言1.3 编程语言1.4 翻译器1.5 编程语言和标记语言区别1.6 总结 2 - 计算机基础2.1 计算机组成2.2 数据存储2.3 数据存储单位2.4 程序运行 1 - 编程语言 1.1 编程 编程&#xff1a; 就是让计算…