|
|
|
@ -0,0 +1,975 @@
|
|
|
|
|
<div align="center">
|
|
|
|
|
<h1> 30 Days Of JavaScript: Data Types</h1>
|
|
|
|
|
<a class="header-badge" target="_blank" href="https://www.linkedin.com/in/asabeneh/">
|
|
|
|
|
<img src="https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social">
|
|
|
|
|
</a>
|
|
|
|
|
<a class="header-badge" target="_blank" href="https://twitter.com/Asabeneh">
|
|
|
|
|
<img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/asabeneh?style=social">
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<sub>Author:
|
|
|
|
|
<a href="https://www.linkedin.com/in/asabeneh/" target="_blank">Asabeneh Yetayeh</a><br>
|
|
|
|
|
<small> 1月, 2020</small>
|
|
|
|
|
</sub>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
[<< Day 1](../readMe.md) | [Day 3 >>](link_to_be_updated)
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
- [📔 第二天](#-第二天)
|
|
|
|
|
- [数据类型](#数据类型)
|
|
|
|
|
- [原始数据类型](#原始数据类型)
|
|
|
|
|
- [非原始数据类型](#非原始数据类型)
|
|
|
|
|
- [数值(Numbers)](#数值numbers)
|
|
|
|
|
- [声明数值变量](#声明数值变量)
|
|
|
|
|
- [Math 对象](#math-对象)
|
|
|
|
|
- [随机数生成器](#随机数生成器)
|
|
|
|
|
- [字符串(Strings)](#字符串strings)
|
|
|
|
|
- [合并字符串](#合并字符串)
|
|
|
|
|
- [用加号(+)合并字符串](#用加号合并字符串)
|
|
|
|
|
- [长字符串](#长字符串)
|
|
|
|
|
- [分离字符(Escape Sequences)](#分离字符escape-sequences)
|
|
|
|
|
- [模版字符串](#模版字符串)
|
|
|
|
|
- [字符串方法](#字符串方法)
|
|
|
|
|
- [检查数据类型和类型转换](#检查数据类型和类型转换)
|
|
|
|
|
- [检查数据类型](#检查数据类型)
|
|
|
|
|
- [转换数据类型(Casting)](#转换数据类型casting)
|
|
|
|
|
- [字符串 -> 整数](#字符串---整数)
|
|
|
|
|
- [字符串 -> 小数](#字符串---小数)
|
|
|
|
|
- [小数 -> 整数](#小数---整数)
|
|
|
|
|
- [💻 第二天:作业](#-第二天作业)
|
|
|
|
|
- [作业:难度水平 1](#作业难度水平-1)
|
|
|
|
|
- [作业:难度水平 2](#作业难度水平-2)
|
|
|
|
|
- [作业:难度水平 3](#作业难度水平-3)
|
|
|
|
|
|
|
|
|
|
# 📔 第二天
|
|
|
|
|
|
|
|
|
|
## 数据类型
|
|
|
|
|
|
|
|
|
|
在前一章节,我们粗略地提到了数据类型。每一个数据和值都有它们对应的数据类型,数据类型代表了数据的特征。数据类型大致可以分为两类:
|
|
|
|
|
|
|
|
|
|
1. 原始数据类型 (primitive data type)
|
|
|
|
|
2. 非原始数据类型(对象引用)(Non-primitive data types 或 Object References)
|
|
|
|
|
|
|
|
|
|
### 原始数据类型
|
|
|
|
|
|
|
|
|
|
JavaScript中的原始数据类型包括:
|
|
|
|
|
|
|
|
|
|
1. 数值(Numbers)- 整数,浮点小数;
|
|
|
|
|
2. 字符串(Strings)- 任何被单引号、双引号或反引号框住的内容;
|
|
|
|
|
3. 布尔值(Booleans)- true 或 false;
|
|
|
|
|
4. 空值(Null)- 空白 或 无;
|
|
|
|
|
5. 未定义值(Undefined)- 已声明但未赋值的变量
|
|
|
|
|
6. 符号(Symbol)- 一种独特的值,可通过符号构造函数生成;
|
|
|
|
|
|
|
|
|
|
非原始数据类型包括:
|
|
|
|
|
|
|
|
|
|
1. 对象(Objects)
|
|
|
|
|
2. 列表(Arrays)
|
|
|
|
|
|
|
|
|
|
那么,到底什么是原始数据类型,什么是非原始数据类型吧。
|
|
|
|
|
*原始* 数据类型是不可变(无法修改)的数据类型。当某个原始数据类型被创建,我们无法修改它。
|
|
|
|
|
|
|
|
|
|
**例:**
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let word = 'JavaScript'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果我们尝试修改这个变量 *word* 所储存的字符串,JavaScript会报错。再次说明,任何被单引号、双引号或反引号框住的内容都是字符串类型数值。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
word[0] = 'Y'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
尝试运行上面的语句不会改变 *word* 变量存储的字符串。所以,我们说字符串数据型是不可变的。<br>
|
|
|
|
|
当对原始数据类型进行比较时,实际上是在对比他们的值(value)。下面的例子我们尝试对比不同的数据值:
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let numOne = 3
|
|
|
|
|
let numTwo = 3
|
|
|
|
|
|
|
|
|
|
console.log(numOne == numTwo) // true
|
|
|
|
|
|
|
|
|
|
let js = 'JavaScript'
|
|
|
|
|
let py = 'Python'
|
|
|
|
|
|
|
|
|
|
console.log(js == py) //false
|
|
|
|
|
|
|
|
|
|
let lightOn = true
|
|
|
|
|
let lightOff = false
|
|
|
|
|
|
|
|
|
|
console.log(lightOn == lightOff) // false
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 非原始数据类型
|
|
|
|
|
|
|
|
|
|
*非原始* 数据类型是可变的(可修改)。我们可以在创建非原始数据类型变量后修改它的值。下例中我们创建了一个列表。列表是用方括号框住的一列数据。列表可以包含相同或不同的数据类型。列表的值可通过对应的序号获取。JavaScript规定列表的序号从0开始,也就是说,一个列表的第一个值的序号是0,第二个值的序号是1,依此类推。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let nums = [1, 2, 3]
|
|
|
|
|
nums[0] = 10
|
|
|
|
|
|
|
|
|
|
console.log(nums) // [10, 2, 3]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
由上可见,列表是可变的。非原始数据类型不能进行对比。即便两个非原始数据类型的变量具有相同的性质和值,它们严格意义上也是不相等的。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let nums = [1, 2, 3]
|
|
|
|
|
let numbers = [1, 2, 3]
|
|
|
|
|
|
|
|
|
|
console.log(nums == numbers) // false
|
|
|
|
|
|
|
|
|
|
let userOne = {
|
|
|
|
|
name:'Asabeneh',
|
|
|
|
|
role:'teaching',
|
|
|
|
|
country:'Finland'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let userTwo = {
|
|
|
|
|
name:'Asabeneh',
|
|
|
|
|
role:'teaching',
|
|
|
|
|
country:'Finland'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log(userOne == userTwo) // false
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
所以,务必牢记,不要对比非原始数据类型的变量,包括列表、函数或对象。<br>
|
|
|
|
|
非原始数据类型变量的“值”的类型是引用类型(reference type),因为当对它们进行比较时,实际上比较的是所引用的地址而不是值。若两个对象引用的是同一个底层对象,那么它们才是严格意义上的相等。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let nums = [1, 2, 3]
|
|
|
|
|
let numbers = nums
|
|
|
|
|
|
|
|
|
|
console.log(nums == numbers) // true
|
|
|
|
|
|
|
|
|
|
let userOne = {
|
|
|
|
|
name:'Asabeneh',
|
|
|
|
|
role:'teaching',
|
|
|
|
|
country:'Finland'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let userTwo = userOne
|
|
|
|
|
|
|
|
|
|
console.log(userOne == userTwo) // true
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果你还是不太理解原始数据类型和非原始数据类型的区别,别担心,先继续学习。等之后再回头来看这部分,也许会有不一样的体会。现在让我们首先细聊一下数值类型(Number)。
|
|
|
|
|
|
|
|
|
|
## 数值(Numbers)
|
|
|
|
|
|
|
|
|
|
数值包括整数和小数,可以进行算术运算,让我们看几个例子。
|
|
|
|
|
|
|
|
|
|
### 声明数值变量
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let age = 35
|
|
|
|
|
const gravity = 9.81 // 用const定义不会改变值的变量
|
|
|
|
|
let mass = 72 // 质量(kg)
|
|
|
|
|
const PI = 3.14 // PI 也是固定值,用const定义
|
|
|
|
|
|
|
|
|
|
// 更多例子
|
|
|
|
|
const boilingPoint = 100 // 水的常温下沸点(摄氏温度)也是固定值。
|
|
|
|
|
const bodyTemp = 37 // 常温下人体平均摄氏温度,固定值。
|
|
|
|
|
|
|
|
|
|
console.log(age, gravity, mass, PI, boilingPoint, bodyTemp)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Math 对象
|
|
|
|
|
|
|
|
|
|
JavaScript内建的 Math 对象包含了很多实用的方法可以运用于数值类型变量。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
const PI = Math.PI
|
|
|
|
|
|
|
|
|
|
console.log(PI) // 3.141592653589793
|
|
|
|
|
|
|
|
|
|
// 四舍五入
|
|
|
|
|
|
|
|
|
|
console.log(Math.round(PI)) // PI 四舍五入得到 3
|
|
|
|
|
|
|
|
|
|
console.log(Math.round(9.81)) // 10
|
|
|
|
|
|
|
|
|
|
console.log(Math.floor(PI)) // 3,向下取整
|
|
|
|
|
|
|
|
|
|
console.log(Math.ceil(PI)) // 4,向上取整
|
|
|
|
|
|
|
|
|
|
console.log(Math.min(-5, 3, 20, 4, 5, 10)) // -5,返回最小值
|
|
|
|
|
|
|
|
|
|
console.log(Math.max(-5, 3, 20, 4, 5, 10)) // 20,返回最大值
|
|
|
|
|
|
|
|
|
|
const randNum = Math.random() // 产生介于 0 ~ 0.999999 的随机数
|
|
|
|
|
console.log(randNum)
|
|
|
|
|
|
|
|
|
|
// 产生介于 0 ~ 10 的随机数
|
|
|
|
|
|
|
|
|
|
const num = Math.floor(Math.random () * 11) // 产生介于 0 ~ 10 的随机数
|
|
|
|
|
console.log(num)
|
|
|
|
|
|
|
|
|
|
//绝对值
|
|
|
|
|
console.log(Math.abs(-10)) // 10
|
|
|
|
|
|
|
|
|
|
//平方根
|
|
|
|
|
console.log(Math.sqrt(100)) // 10
|
|
|
|
|
|
|
|
|
|
console.log(Math.sqrt(2)) // 1.4142135623730951
|
|
|
|
|
|
|
|
|
|
//次方
|
|
|
|
|
console.log(Math.pow(3, 2)) // 9
|
|
|
|
|
|
|
|
|
|
console.log(Math.E) // 2.718
|
|
|
|
|
|
|
|
|
|
//对数
|
|
|
|
|
//通过函数返回自然对数,以e为底数,参数x为指数
|
|
|
|
|
console.log(Math.log(2)) // 0.6931471805599453
|
|
|
|
|
console.log(Math.log(10)) // 2.302585092994046
|
|
|
|
|
|
|
|
|
|
//通过 Math 对象内建常量返回自然对数,
|
|
|
|
|
console.log(Math.LN2) // 0.6931471805599453
|
|
|
|
|
console.log(Math.LN10) // 2.302585092994046
|
|
|
|
|
|
|
|
|
|
//三角函数
|
|
|
|
|
Math.sin(0)
|
|
|
|
|
Math.sin(60)
|
|
|
|
|
|
|
|
|
|
Math.cos(0)
|
|
|
|
|
Math.cos(60)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 随机数生成器
|
|
|
|
|
|
|
|
|
|
JavaScript 的 Math 对象提供的 random() 函数可以产生介于 0 ~ 0.999999... 的随机数。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let randomNum = Math.random() // g介于 0 ~ 0.999999... 的随机数
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
现在,我们尝试用 random() 函数产生介于0 ~ 10 之间的随机数。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let randomNum = Math.random() // 介于 0 ~ 0.999999... 的随机数
|
|
|
|
|
let numBtnZeroAndTen = randomNum * 11
|
|
|
|
|
|
|
|
|
|
console.log(numBtnZeroAndTen) // 返回值范围: 0 ~ 10.99
|
|
|
|
|
|
|
|
|
|
let randomNumRoundToFloor = Math.floor(numBtnZeroAndTen)
|
|
|
|
|
console.log(randomNumRoundToFloor) // 返回值范围:- ~ 10
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 字符串(Strings)
|
|
|
|
|
|
|
|
|
|
字符串是一串文字,并用 **_单引号_**,**_双引号_** 或 **_反引号_** 框住。声明一个字符串变量时,我们需要定义变量名,声明操作符(=),以及一串用单引号、双引号或反引号框住的值。下面给你们打几个样儿;
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let space = ' ' // 空格键
|
|
|
|
|
let firstName = 'Asabeneh'
|
|
|
|
|
let lastName = 'Yetayeh'
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
let city = 'Helsinki'
|
|
|
|
|
let language = 'JavaScript'
|
|
|
|
|
let job = 'teacher'
|
|
|
|
|
let quote = "俗话说得好‘一日之计在于晨’"
|
|
|
|
|
let quotWithBackTick = `有道是'车到山前必有路‘`
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 合并字符串
|
|
|
|
|
|
|
|
|
|
将两个或以上字符串相连叫做合并。我们用之前定义的字符串来演示:
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let fullName = firstName + space + lastName; // 合并三个字符串
|
|
|
|
|
console.log(fullName);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
Asabeneh Yetayeh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
我们可以用多种方式合并字符串。
|
|
|
|
|
|
|
|
|
|
#### 用加号(+)合并字符串
|
|
|
|
|
|
|
|
|
|
用加号合并字符串是old school,容易导致错误。在此介绍这种方法供参考,但是我强烈建议使用 ES6 标准模版字符串(之后详解)。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// 定义不同类型的变量
|
|
|
|
|
let space = ' '
|
|
|
|
|
let firstName = 'Asabeneh'
|
|
|
|
|
let lastName = 'Yetayeh'
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
let city = 'Helsinki'
|
|
|
|
|
let language = 'JavaScript'
|
|
|
|
|
let job = 'teacher'
|
|
|
|
|
let age = 250
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let fullName =firstName + space + lastName
|
|
|
|
|
let personInfoOne = fullName + '. I am ' + age + '. I live in ' + country; // ES5 string addition
|
|
|
|
|
|
|
|
|
|
console.log(personInfoOne)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
Asabeneh Yetayeh. I am 250. I live in Finland
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 长字符串
|
|
|
|
|
|
|
|
|
|
字符串可以是一个字母、一段话甚至一页内容。如果字符串太长导致一行无法容纳,我们可以用斜线(\\)来标记行末,代表字符串将在下一行继续。
|
|
|
|
|
|
|
|
|
|
**例:**
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
const paragraph = "My name is Asabeneh Yetayeh. I live in Finland, Helsinki.\
|
|
|
|
|
I am a teacher and I love teaching. I teach HTML, CSS, JavaScript, React, Redux, \
|
|
|
|
|
Node.js, Python, Data Analysis and D3.js for anyone who is interested to learn. \
|
|
|
|
|
In the end of 2019, I was thinking to expand my teaching and to reach \
|
|
|
|
|
to global audience and I started a Python challenge from November 20 - December 19.\
|
|
|
|
|
It was one of the most rewarding and inspiring experience.\
|
|
|
|
|
Now, we are in 2020. I am enjoying preparing the 30DaysOfJavaScript challenge and \
|
|
|
|
|
I hope you are enjoying too."
|
|
|
|
|
|
|
|
|
|
console.log(paragraph)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 分离字符(Escape Sequences)
|
|
|
|
|
|
|
|
|
|
JavaScript 和大部分其他编程语言使用 \ + 一些字符作为分离字符,让我们看一些常用的分离字符:
|
|
|
|
|
|
|
|
|
|
- \n: 换行字符
|
|
|
|
|
- \t: Tab字符,代表8个空格
|
|
|
|
|
- \\\\: 斜线
|
|
|
|
|
- \\': 单引号
|
|
|
|
|
- \\": 双引号
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
console.log('I hope everyone is enjoying the 30 Days Of JavaScript challenge.\nDo you ?') // 换行
|
|
|
|
|
console.log('Days\tTopics\tExercises')
|
|
|
|
|
console.log('Day 1\t3\t5')
|
|
|
|
|
console.log('Day 2\t3\t5')
|
|
|
|
|
console.log('Day 3\t3\t5')
|
|
|
|
|
console.log('Day 4\t3\t5')
|
|
|
|
|
console.log('This is a backslash symbol (\\)') // 在字符串中显示斜线
|
|
|
|
|
console.log('In every programming language it starts with \"Hello, World!\"')
|
|
|
|
|
console.log("In every programming language it starts with \'Hello, World!\'")
|
|
|
|
|
console.log('The saying \'Seeing is Believing\' isn\'t correct in 2020')
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
控制台输出如下:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
I hope everyone is enjoying the 30 Days Of JavaScript challenge.
|
|
|
|
|
Do you ?
|
|
|
|
|
Days Topics Exercises
|
|
|
|
|
Day 1 3 5
|
|
|
|
|
Day 2 3 5
|
|
|
|
|
Day 3 3 5
|
|
|
|
|
Day 4 3 5
|
|
|
|
|
This is a backslash symbol (\)
|
|
|
|
|
In every programming language it starts with "Hello, World!"
|
|
|
|
|
In every programming language it starts with 'Hello, World!'
|
|
|
|
|
The saying 'Seeing is Believing' isn't correct in 2020
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 模版字符串
|
|
|
|
|
|
|
|
|
|
模版字符串用反引号框住。在模版字符串中我们可以使用表达式。表达式用花括号框住,前面需要加一个美元符号$。语法如下:
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
//Syntax
|
|
|
|
|
`String literal text`
|
|
|
|
|
`String literal text ${expression}`
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**例1**
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
console.log(`The sum of 2 and 3 is 5`) // statically writing the data
|
|
|
|
|
let a = 2
|
|
|
|
|
let b = 3
|
|
|
|
|
console.log(`The sum of ${a} and ${b} is ${a + b}`) // injecting the data dynamically
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**例2**
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let firstName = 'Asabeneh'
|
|
|
|
|
let lastName = 'Yetayeh'
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
let city = 'Helsinki'
|
|
|
|
|
let language = 'JavaScript'
|
|
|
|
|
let job = 'teacher'
|
|
|
|
|
let age = 250
|
|
|
|
|
let fullName = firstName + ' ' + lastName
|
|
|
|
|
|
|
|
|
|
let personInfoTwo = `I am ${fullName}. I am ${age}. I live in ${country}.` //ES6 - String interpolation method
|
|
|
|
|
let personInfoThree = `I am ${fullName}. I live in ${city}, ${country}. I am a ${job}. I teach ${language}.`
|
|
|
|
|
console.log(personInfoTwo)
|
|
|
|
|
console.log(personInfoThree)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
I am Asabeneh Yetayeh. I am 250. I live in Finland.
|
|
|
|
|
I am Asabeneh Yetayeh. I live in Helsinki, Finland. I am a teacher. I teach JavaScript.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
用模版字符串,我们可以加入表达式。表达式可以是一个值,或者是语句(对比、运算或条件运算符)。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let a = 2
|
|
|
|
|
let b = 3
|
|
|
|
|
console.log(`${a} is greater than ${b}: ${a > b}`)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
2 is greater than 3: false
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 字符串方法
|
|
|
|
|
|
|
|
|
|
在 JavaScript 里,所有东西都是对象。字符串是原始数据类型,在定义之后就不能修改。字符串对象内建了很多实用方法可以用来处理字符串变量。
|
|
|
|
|
|
|
|
|
|
1. *length*:字符串的 *length* 方法返回该字符串的字符长度,包括空格字符。
|
|
|
|
|
|
|
|
|
|
**例:**
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let js = 'JavaScript'
|
|
|
|
|
console.log(js.length) // 10
|
|
|
|
|
let firstName = 'Asabeneh'
|
|
|
|
|
console.log(firstName.length) // 8
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. *获取字符串内的字符*:我们可以用序号获取字符串里面的每一个字符。类似列表,字符串的序号也是从0开始,最后一个字符的序号是字符串的长度减1.
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
让我们尝试获取 'JavaScript' 这个字符串里的字符吧:
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'JavaScript'
|
|
|
|
|
let firstLetter = string[0]
|
|
|
|
|
|
|
|
|
|
console.log(firstLetter) // J
|
|
|
|
|
|
|
|
|
|
let secondLetter = string[1] // a
|
|
|
|
|
let thirdLetter = string[2]
|
|
|
|
|
let lastLetter = string[9]
|
|
|
|
|
|
|
|
|
|
console.log(lastLetter) // t
|
|
|
|
|
|
|
|
|
|
let lastIndex = string.length - 1
|
|
|
|
|
|
|
|
|
|
console.log(lastIndex) // 9
|
|
|
|
|
console.log(string[lastIndex]) // t
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. *toUpperCase()*: 这个方法将字符串转换为大写。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'JavaScript'
|
|
|
|
|
|
|
|
|
|
console.log(string.toUpperCase()) // JAVASCRIPT
|
|
|
|
|
|
|
|
|
|
let firstName = 'Asabeneh'
|
|
|
|
|
|
|
|
|
|
console.log(firstName.toUpperCase()) // ASABENEH
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
|
|
|
|
|
console.log(country.toUpperCase()) // FINLAND
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4. *toLowerCase()*: 这个方法将字符串转换为小写。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'JavasCript'
|
|
|
|
|
|
|
|
|
|
console.log(string.toLowerCase()) // javascript
|
|
|
|
|
|
|
|
|
|
let firstName = 'Asabeneh'
|
|
|
|
|
|
|
|
|
|
console.log(firstName.toLowerCase()) // asabeneh
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
|
|
|
|
|
console.log(country.toLowerCase()) // finland
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
5. *substr()*:这个方法获取字符串的子字符串,需要两个参数:开始序号和子字符串长度。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'JavaScript'
|
|
|
|
|
console.log(string.substr(4,6)) // Script
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
console.log(country.substr(3, 4)) // land
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
6. *substring()*: 这个方法也是获取字符串的子字符串,需要两个参数:开始序号和结束序号。注意,返回的子字符串不包括结束序号的字符。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'JavaScript'
|
|
|
|
|
|
|
|
|
|
console.log(string.substring(0,4)) // Java
|
|
|
|
|
console.log(string.substring(4,10)) // Script
|
|
|
|
|
console.log(string.substring(4)) // Script
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
|
|
|
|
|
console.log(country.substring(0, 3)) // Fin
|
|
|
|
|
console.log(country.substring(3, 7)) // land
|
|
|
|
|
console.log(country.substring(3)) // land
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
7. *split()*:此方法将字符串按参数分隔
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = '30 Days Of JavaScript'
|
|
|
|
|
|
|
|
|
|
console.log(string.split()) // Changes to an array -> ["30 Days Of JavaScript"]
|
|
|
|
|
console.log(string.split(' ')) // Split to an array at space -> ["30", "Days", "Of", "JavaScript"]
|
|
|
|
|
|
|
|
|
|
let firstName = 'Asabeneh'
|
|
|
|
|
|
|
|
|
|
console.log(firstName.split()) // Change to an array - > ["Asabeneh"]
|
|
|
|
|
console.log(firstName.split('')) // Split to an array at each letter -> ["A", "s", "a", "b", "e", "n", "e", "h"]
|
|
|
|
|
|
|
|
|
|
let countries = 'Finland, Sweden, Norway, Denmark, and Iceland'
|
|
|
|
|
|
|
|
|
|
console.log(countries.split(',')) // split to any array at comma -> ["Finland", " Sweden", " Norway", " Denmark", " and Iceland"]
|
|
|
|
|
console.log(countries.split(', ')) // ["Finland", "Sweden", "Norway", "Denmark", "and Iceland"]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
8. *trim()*:删除字符串首尾的空白字符。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = ' 30 Days Of JavaScript '
|
|
|
|
|
|
|
|
|
|
console.log(string)
|
|
|
|
|
console.log(string.trim(' '))
|
|
|
|
|
|
|
|
|
|
let firstName = ' Asabeneh '
|
|
|
|
|
|
|
|
|
|
console.log(firstName)
|
|
|
|
|
console.log(firstName.trim()) // still removes spaces at the beginning and the end of the string
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
30 Days Of JavasCript
|
|
|
|
|
30 Days Of JavasCript
|
|
|
|
|
Asabeneh
|
|
|
|
|
Asabeneh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
9. *includes()*:此方法通过输入一个子字符串,查询是否包含在目标字符串中。若包含,则返回true。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = '30 Days Of JavaScript'
|
|
|
|
|
|
|
|
|
|
console.log(string.includes('Days')) // true
|
|
|
|
|
console.log(string.includes('days')) // false - it is case sensitive!
|
|
|
|
|
console.log(string.includes('Script')) // true
|
|
|
|
|
console.log(string.includes('script')) // false
|
|
|
|
|
console.log(string.includes('java')) // false
|
|
|
|
|
console.log(string.includes('Java')) // true
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
|
|
|
|
|
console.log(country.includes('fin')) // false
|
|
|
|
|
console.log(country.includes('Fin')) // true
|
|
|
|
|
console.log(country.includes('land')) // true
|
|
|
|
|
console.log(country.includes('Land')) // false
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
10. *replace()*:替换函数,需要两个参数,旧字符串和替换字符串。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.replace(oldsubstring, newsubstring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = '30 Days Of JavaScript'
|
|
|
|
|
console.log(string.replace('JavaScript', 'Python')) // 30 Days Of Python
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
console.log(country.replace('Fin', 'Noman')) // Nomanland
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
11. *charAt()*:输入序号返回对应的字符
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.charAt(index)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = '30 Days Of JavaScript'
|
|
|
|
|
console.log(string.charAt(0)) // 3
|
|
|
|
|
|
|
|
|
|
let lastIndex = string.length - 1
|
|
|
|
|
console.log(string.charAt(lastIndex)) // t
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
12. *charCodeAt()*:输入序号返回对应字符的字符编码(ASCII编码)。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.charCodeAt(index)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = '30 Days Of JavaScript'
|
|
|
|
|
console.log(string.charCodeAt(3)) // D ASCII number is 68
|
|
|
|
|
|
|
|
|
|
let lastIndex = string.length - 1
|
|
|
|
|
console.log(string.charCodeAt(lastIndex)) // t ASCII is 116
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
13. *indexOf()*:输入子字符串,返回该子字符串的首字符在目标字符串的位置。若目标字符串不包含子字符串,返回-1。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.indexOf(substring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = '30 Days Of JavaScript'
|
|
|
|
|
|
|
|
|
|
console.log(string.indexOf('D')) // 3
|
|
|
|
|
console.log(string.indexOf('Days')) // 3
|
|
|
|
|
console.log(string.indexOf('days')) // -1
|
|
|
|
|
console.log(string.indexOf('a')) // 4
|
|
|
|
|
console.log(string.indexOf('JavaScript')) // 11
|
|
|
|
|
console.log(string.indexOf('Script')) //15
|
|
|
|
|
console.log(string.indexOf('script')) // -1
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
14. *lastIndexOf()*:输入子字符串,返回该子字符串的最后一个字符在目标字符串的位置。若目标字符串不包含子字符串,返回-1。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
//syntax
|
|
|
|
|
string.lastIndexOf(substring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'I love JavaScript. If you do not love JavaScript what else can you love.'
|
|
|
|
|
|
|
|
|
|
console.log(string.lastIndexOf('love')) // 67
|
|
|
|
|
console.log(string.lastIndexOf('you')) // 63
|
|
|
|
|
console.log(string.lastIndexOf('JavaScript')) // 38
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
15. *concat()*:可以输入多个字符串,返回合并后的字符串。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.concat(substring, substring, substring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = '30'
|
|
|
|
|
console.log(string.concat("Days", "Of", "JavaScript")) // 30DaysOfJavaScript
|
|
|
|
|
|
|
|
|
|
let country = 'Fin'
|
|
|
|
|
console.log(country.concat("land")) // Finland
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
16. *startsWith*:输入字符串,检查目标字符串的开头是否和输入字符串一致,返回布尔值。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
//syntax
|
|
|
|
|
string.startsWith(substring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'Love is the best to in this world'
|
|
|
|
|
|
|
|
|
|
console.log(string.startsWith('Love')) // true
|
|
|
|
|
console.log(string.startsWith('love')) // false
|
|
|
|
|
console.log(string.startsWith('world')) // false
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
|
|
|
|
|
console.log(country.startsWith('Fin')) // true
|
|
|
|
|
console.log(country.startsWith('fin')) // false
|
|
|
|
|
console.log(country.startsWith('land')) // false
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
17. *endsWith*:输入字符串,检查目标字符串的结尾是否和输入字符串一致,返回布尔值。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.endsWith(substring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'Love is the most powerful feeling in the world'
|
|
|
|
|
|
|
|
|
|
console.log(string.endsWith('world')) // true
|
|
|
|
|
console.log(string.endsWith('love')) // false
|
|
|
|
|
console.log(string.endsWith('in the world')) // true
|
|
|
|
|
|
|
|
|
|
let country = 'Finland'
|
|
|
|
|
|
|
|
|
|
console.log(country.endsWith('land')) // true
|
|
|
|
|
console.log(country.endsWith('fin')) // false
|
|
|
|
|
console.log(country.endsWith('Fin')) // false
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
18. *search*:输入字符串或正则表达式,返回目标字符串中第一个符合输入字符串的序号。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.search(substring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'I love JavaScript. If you do not love JavaScript what else can you love.'
|
|
|
|
|
console.log(string.search('love')) // 2
|
|
|
|
|
console.log(string.search(/javascript/gi)) // 7
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
19. *match*:输入字符串或正则表达式,若目标字符串匹配到输入字符串,则返回列表,否则返回空值。在此我们顺便看看正则表达式,它是用斜线框住的字符串+标记。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'love'
|
|
|
|
|
let patternOne = /love/ // 没有标记
|
|
|
|
|
let patternTwo = /love/gi // g代表搜索整个text,i代表无视大小写
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Match syntax
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// syntax
|
|
|
|
|
string.match(substring)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'I love JavaScript. If you do not love JavaScript what else can you love.'
|
|
|
|
|
console.log(string.match('love'))
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
["love", index: 2, input: "I love JavaScript. If you do not love JavaScript what else can you love.", groups: undefined]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let pattern = /love/gi
|
|
|
|
|
console.log(string.match(pattern)) // ["love", "love", "love"]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
让我们用正则表达式从字符串中获取数字。别担心,这只是一个简单的例子,并不是对正则表达式的全部介绍,之后的章节会有详细说明。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let txt = 'In 2019, I ran 30 Days of Python. Now, in 2020 I am super exited to start this challenge'
|
|
|
|
|
let regEx = /\d+/
|
|
|
|
|
|
|
|
|
|
// 斜线后加d是分离字符,代表匹配的是数字,而不是字母d
|
|
|
|
|
// + 号代表一个或以上数字
|
|
|
|
|
// 若斜线后有g标记则代表搜索全文。
|
|
|
|
|
|
|
|
|
|
console.log(txt.match(regEx)) // ["2", "0", "1", "9", "3", "0", "2", "0", "2", "0"]
|
|
|
|
|
console.log(txt.match(/\d+/g)) // ["2019", "30", "2020"]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
20. *repeat()*:输入数字n,返回重复n次字段并合并。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
string.repeat(n)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let string = 'love'
|
|
|
|
|
console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 检查数据类型和类型转换
|
|
|
|
|
|
|
|
|
|
### 检查数据类型
|
|
|
|
|
|
|
|
|
|
用 _typeof_ 方法检查数据类型。
|
|
|
|
|
|
|
|
|
|
**Example:**
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// 不同的数据类型
|
|
|
|
|
// 让我们先定义不同的数据类型变量
|
|
|
|
|
|
|
|
|
|
let firstName = 'Asabeneh' // 字符串
|
|
|
|
|
let lastName = 'Yetayeh' // 字符串
|
|
|
|
|
let country = 'Finland' // 字符串
|
|
|
|
|
let city = 'Helsinki' // 字符串
|
|
|
|
|
let age = 250 // 数值
|
|
|
|
|
let job // 未定义值,因为还未赋值
|
|
|
|
|
|
|
|
|
|
console.log(typeof 'Asabeneh') // 字符串
|
|
|
|
|
console.log(typeof firstName) // 字符串
|
|
|
|
|
console.log(typeof 10) // 数值
|
|
|
|
|
console.log(typeof 3.14) // 数值
|
|
|
|
|
console.log(typeof true) // 布尔值
|
|
|
|
|
console.log(typeof false) // 布尔值
|
|
|
|
|
console.log(typeof NaN) // 数值
|
|
|
|
|
console.log(typeof job) // 未定义值
|
|
|
|
|
console.log(typeof undifined) // 未定义值
|
|
|
|
|
console.log(typeof null) // 对象
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 转换数据类型(Casting)
|
|
|
|
|
|
|
|
|
|
- 转换(Casting):将一种数据类型转换为另一种数据类型。常用的方法包括 _parseInt()_,_parseFloat()_,_Number()_,_+ 号_ 或 _str()_ 。
|
|
|
|
|
当我们对字符串形式的数字进行运算时,需要先将其转换为数值类型再进行运算,否则会报错。
|
|
|
|
|
|
|
|
|
|
#### 字符串 -> 整数
|
|
|
|
|
|
|
|
|
|
可以将字符串形式的数字转换为数字。字符串型数字就是引号内的数字,例如:'10', '5'。
|
|
|
|
|
可用以下方法将字符串型数字转换为整数:
|
|
|
|
|
|
|
|
|
|
- parseInt() 函数
|
|
|
|
|
- Number() 函数
|
|
|
|
|
- 加号(+)
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let num = '10'
|
|
|
|
|
let numInt = parseInt(num)
|
|
|
|
|
console.log(numInt) // 10
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let num = '10'
|
|
|
|
|
let numInt = Number(num)
|
|
|
|
|
|
|
|
|
|
console.log(numInt) // 10
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let num = '10'
|
|
|
|
|
let numInt = +num
|
|
|
|
|
|
|
|
|
|
console.log(numInt) // 10
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 字符串 -> 小数
|
|
|
|
|
|
|
|
|
|
同样地,我们也可以将字符串型数字转换为小数。字符串形式的小数形如:'9.81', '3.14', '1.44'。
|
|
|
|
|
可用以下方法把字符串型数字转换为小数:
|
|
|
|
|
|
|
|
|
|
- parseFloat() 函数
|
|
|
|
|
- Number() 函数
|
|
|
|
|
- 加号(+)
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let num = '9.81'
|
|
|
|
|
let numFloat = parseFloat(num)
|
|
|
|
|
|
|
|
|
|
console.log(numFloat) // 9.81
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let num = '9.81'
|
|
|
|
|
let numFloat = Number(num)
|
|
|
|
|
|
|
|
|
|
console.log(numFloat) // 9.81
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let num = '9.81'
|
|
|
|
|
let numFloat = +num
|
|
|
|
|
|
|
|
|
|
console.log(numFloat) // 9.81
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 小数 -> 整数
|
|
|
|
|
|
|
|
|
|
可以通过以下方法将小数转换为整数。
|
|
|
|
|
|
|
|
|
|
- parseInt() 函数
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let num = 9.81
|
|
|
|
|
let numInt = parseInt(num)
|
|
|
|
|
|
|
|
|
|
console.log(numInt) // 9
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
🌕 你可太牛逼了!就在此刻,你完成了第二天的挑战,你已经向牛逼头子迈出坚实的两大步了!现在,让我们做一些轻松愉快的小作业巩固知识吧~
|
|
|
|
|
|
|
|
|
|
## 💻 第二天:作业
|
|
|
|
|
|
|
|
|
|
### 作业:难度水平 1
|
|
|
|
|
|
|
|
|
|
1. 定义变量,命名为“challenge”并赋值 **'30 Days Of JavaScript'**。
|
|
|
|
|
2. 用 __console.log()__ 将1中变量输出到浏览器控制台。
|
|
|
|
|
3. 用 _console.log()_ 输出1中变量的 __字符串长度__ 到浏览器控制台。
|
|
|
|
|
4. 用 __toUpperCase()__ 函数将1中变量转换为全大写。
|
|
|
|
|
5. 用 __toLowerCase()__ 函数将1中变量转换为全小写。
|
|
|
|
|
6. 用 __substr()__ 或 __substring()__ 获取1中变量的第一个词。
|
|
|
|
|
7. 将 *Days Of JavaScript* 字符串从 *30 Days Of JavaScript* 字符串中剥离。
|
|
|
|
|
8. 用 __includes()__ 函数检查1中变量是否包含词语 __Script__ 。
|
|
|
|
|
9. 用 __split()__ 函数将1中变量分隔成 __列表__ 。
|
|
|
|
|
10. 用 __split()__ 函数将字符串 ”30 Days Of JavaScript“ 按空格分隔成列表。
|
|
|
|
|
11. 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon', 按逗号 __分隔__ 此字符串形成列表。
|
|
|
|
|
12. 用 __replace()__ 函数将字符串 ”30 Days Of JavaScript“ 修改为 ”30 Days Of Python“。
|
|
|
|
|
13. ”30 Days Of JavaScript“ 这个字符串的序号为15的字符是什么?请使用 __charAt()__ 函数。
|
|
|
|
|
14. ”30 Days Of JavaScript“ 这个字符串里字符”J“的字符编码是什么?请使用 __charCodeAt()__ 函数。
|
|
|
|
|
15. 用 __indexOf__ 函数找到 __a__ 字符在”30 Days Of JavaScript“字符串中第一次出现的位置。
|
|
|
|
|
16. 用 __lastIndexOf__ 函数找到 __a__ 字符在”30 Days Of JavaScript“字符串中最后一次出现的位置。
|
|
|
|
|
17. 用 __indexOf__ 函数找到 __because__ 这个词在 __”You cannot end a sentence with because because because is a conjunction“__ 这个句子中第一次出现的位置。
|
|
|
|
|
18. 用 __lastIndexOf__ 函数找到 __because__ 这个词在 __"You cannot end a sentence with because because because is a conjunction"__ 这个句子中第最后出现的位置。
|
|
|
|
|
19. 用 __search__ 函数找到 __because__ 这个词在 __”You cannot end a sentence with because because because is a conjunction“__ 这个句子中第一次出现的位置。
|
|
|
|
|
20. 用 __trim()__ 函数删除' 30 Days Of JavaScript '字符串的前后空格.
|
|
|
|
|
21. 将 __startsWith()__ 函数运用于 *30 Days Of JavaScript* 字符串,并返回true
|
|
|
|
|
22. 用 __endsWith()__ 函数运用于 *30 Days Of JavaScript* 字符串,并返回true
|
|
|
|
|
23. 用 __match()__ 函数找到 *30 Days Of JavaScript* 字符串里所有字母 __a__ 。
|
|
|
|
|
24. 用 __concat()__ 函数合并 '30 Days of' 和 'JavaScript' 得到 '30 Days Of JavaScript'。
|
|
|
|
|
25. 用 __repeat()__ 函数输出两次*30 Days Of JavaScript* 。
|
|
|
|
|
|
|
|
|
|
### 作业:难度水平 2
|
|
|
|
|
|
|
|
|
|
1. 用 console.log() 输出以下字符串
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
The quote 'There is no exercise better for the heart than reaching down and lifting people up.' by John Holmes teaches us to help one another.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. 用 console.log() 输出特蕾莎修女的名言:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
"Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead."
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. 检查 typeof '10' 是否等于 10。如果不是,使其相等。
|
|
|
|
|
4. 检查 parseFloat('9.8') 是否等于 10。如果不是,使其相等。
|
|
|
|
|
5. 检查是否可以在 “python”和“jargon”中找到“on“。
|
|
|
|
|
6. _I hope this course is not full of jargon_. 检查 _jargon_ 是否在前句中。
|
|
|
|
|
7. 产生一个 \[0,100\] 的随机数。
|
|
|
|
|
8. 产生一个 \[50,100\] 的随机数。
|
|
|
|
|
9. 产生一个 \[0,255\] 的随机数。
|
|
|
|
|
10. 用随机数获取 'JavaScript' 字符串中的一个字符。
|
|
|
|
|
11. 用 console.log() 和分离字符输出下文。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
1 1 1 1 1
|
|
|
|
|
2 1 2 4 8
|
|
|
|
|
3 1 3 9 27
|
|
|
|
|
4 1 4 16 64
|
|
|
|
|
5 1 5 25 125
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
12. 用 __substr__ 函数将字符串 __because because because__ 从此句子 __'You cannot end a sentence with because because because is a conjunction'__ 中分离。
|
|
|
|
|
|
|
|
|
|
### 作业:难度水平 3
|
|
|
|
|
|
|
|
|
|
1. 'Love is the best thing in this world. Some found their love and some are still looking for their love.' 计算这个句子里面有多少个 __love__ 。
|
|
|
|
|
2. 用 __match()__ 函数计算 __'You cannot end a sentence with because because because is a conjunction'__ 这个句子里有多少个 __because__ 。
|
|
|
|
|
3. 美化下方文字并找到出现频率最高的词。(提示:用 replace 和 正则表达式)
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
const sentence = '%I $am@% a %tea@cher%, &and& I lo%#ve %te@a@ching%;. The@re $is no@th@ing; &as& mo@re rewarding as educa@ting &and& @emp%o@weri@ng peo@ple. ;I found tea@ching m%o@re interesting tha@n any ot#her %jo@bs. %Do@es thi%s mo@tiv#ate yo@u to be a tea@cher!? %Th#is 30#Days&OfJavaScript &is al@so $the $resu@lt of &love& of tea&ching'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' 通过从字符串中提取数字,计算这个人的年收入。
|
|
|
|
|
|
|
|
|
|
🎉 恭喜!🎉
|
|
|
|
|
|
|
|
|
|
[<< Day 1](../readMe.md) | [Day 3 >>](link_to_be_updated)
|