Skip to content

Commit 7db1942

Browse files
committed
Complete array method.
1 parent cf833f1 commit 7db1942

File tree

2 files changed

+94
-16
lines changed

2 files changed

+94
-16
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# JavaScript学习记录
22

33
> 总结内容主要都是红宝书中阅读整理
4-
> 其实都推荐前端学习一下此书
4+
> 不管在哪里看文章都推荐前端学习此书可想而知本书的受欢迎程度
55
>
66
>《JavaScript高级程序设计》 [] Nicholas C.Zakas 著
77
>

article/005-reference-object-array.md

Lines changed: 93 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,39 @@
44
引用类型的值(对象)是引用类型的一个实例。引用类型是一种数据结构,用于将数据和功能组织在一起。
55
ECMAScript 提供了很多原生引用类型。
66

7+
8+
## 目录
9+
10+
JavaScript 引用数据类型
11+
12+
- 1、Object类型
13+
- 1.1、创建对象的方式
14+
- 1.2、读取对象属性
15+
- 2、Array类型
16+
- 2.1、创建方式
17+
- 2.2、读取方式
18+
- 2.3、检测数组
19+
- 2.4、转换方法
20+
- 2.5、栈方法
21+
- 2.6、队列方法
22+
- 2.7、栈、队列小结
23+
- 1. 栈的使用
24+
- 2. 队列的使用
25+
- 2.7、重排序方法
26+
- 2.8、操作方法
27+
- 1. concat() 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
28+
- 2. slice() 返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。原始数组不会被修改。
29+
- 3. splice() 通过删除现有元素和/或添加新元素来更改一个数组的内容。
30+
- 2.9、位置方法
31+
- 1. indexOf()、lastIndexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。indexOf() 从数组开头向后查找, lastIndexOf() 从数组末尾开始向前查找。
32+
- 2. 使用场景
33+
- 2.10、迭代方法
34+
35+
36+
37+
38+
39+
740
## 1、Object类型
841

942

@@ -54,11 +87,11 @@ person["first name"] = "wjh"
5487

5588

5689

57-
### 2、Array类型
90+
## 2、Array类型
5891

5992

6093

61-
### 2.1、数组创建方式
94+
### 2.1、创建方式
6295

6396
```javascript
6497
// 1、使用构造函数:
@@ -82,7 +115,7 @@ var values = [1, 2, ]; // 不推荐这样用,这样会创
82115

83116

84117

85-
### 2.2、数组读取方式
118+
### 2.2、读取方式
86119

87120
使用索引读取
88121

@@ -127,7 +160,7 @@ if(Array.isArray(value)){
127160

128161

129162

130-
### 2.4、数组转换方法
163+
### 2.4、转换方法
131164

132165
所有对象都具有 toLocaleString()、toString() 和 valueOf() 方法。
133166

@@ -181,7 +214,7 @@ alert(persons.toLocaleString()); // 1 => toLocaleString ,2 => toLocaleStr
181214

182215

183216

184-
### 2.5、数组栈方法
217+
### 2.5、栈方法
185218

186219
什么是栈?
187220

@@ -205,7 +238,7 @@ console.log(person)
205238

206239

207240

208-
### 2.6、数组队列方法
241+
### 2.6、队列方法
209242

210243
什么是队列?
211244
- 队列是一种 **FIFO(First-In-First-Out 先进先出)** 的数据结构。
@@ -230,7 +263,7 @@ console.log(person) // 移除后的数组 [ 'D
230263

231264
### 2.7、栈、队列小结:
232265

233-
#### 栈的使用
266+
#### 1. 栈的使用
234267

235268
正向栈使用:push() pop() 从尾部进一个,再从尾部出一个
236269

@@ -239,7 +272,7 @@ console.log(person) // 移除后的数组 [ 'D
239272
![队列图示](./img/005-stack.png)
240273

241274

242-
#### 队列的使用
275+
#### 2. 队列的使用
243276

244277
正向队列使用:push() shift() 从尾部先进一个,再从头部出去一个
245278

@@ -300,7 +333,7 @@ function compare(val1, val2) {
300333

301334

302335

303-
### 2.8 数组操作方法
336+
### 2.8、操作方法
304337

305338
#### 1. concat() 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
306339

@@ -366,14 +399,14 @@ console.log(result3); // 返回值:[ 'Siri' ]
366399

367400
上述示例演示可以看到:splice 方法会改变原数组内容;并且可实现 增、删、改操作(改操作实质就是:删除后增加)。
368401

369-
splice 的返回值也可以从上面示例看到,如果有删除元素就会返回一个数组,包含从原始数组中删除的项(没有删除就反悔一个空数组)。
402+
splice 的返回值也可以从上面示例看到,如果有删除元素就会返回一个数组,包含从原始数组中删除的项(没有删除就返回一个空数组)。
370403

371404

372-
### 2.9 位置方法
405+
### 2.9位置方法
373406

374407
数组位置方法有两个: indexOf() 和 lastIndexOf()。
375408

376-
#### `indexOf()``lastIndexOf()` 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。`indexOf()` 从数组开头向后查找, `lastIndexOf()` 从数组末尾开始向前查找。
409+
#### 1. `indexOf()``lastIndexOf()` 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。`indexOf()` 从数组开头向后查找, `lastIndexOf()` 从数组末尾开始向前查找。
377410

378411
两个参数分别指定:要查找的元素、开始查找的位置。
379412

@@ -387,9 +420,9 @@ array.indexOf(2, -3); // 0
387420

388421
```
389422

390-
#### 使用场景
423+
#### 2. 使用场景
391424

392-
1. 找出指定元素出现的所有位置
425+
1找出指定元素出现的所有位置
393426

394427
```javascript
395428
var indices = [];
@@ -407,7 +440,7 @@ while (idx != -1) {
407440
console.log(indices); // [ 1, 3, 5 ]
408441
```
409442

410-
2. 判断一个元素是否在数组里,不在则更新数组
443+
2判断一个元素是否在数组里,不在则更新数组
411444

412445
```javascript
413446
function updateBrandCollection(brands, brand) {
@@ -427,13 +460,58 @@ updateBrandCollection(brands, '苹果'); // 苹果 已经存在于品牌集
427460
```
428461

429462

463+
### 2.10、迭代方法
430464

465+
- every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true, 则返回 true。
466+
- some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
467+
- filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
431468

469+
- forEach():对数组中的每一项运行给定函数,没有返回值。
470+
- map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
432471

433472

434473

474+
```javascript
475+
var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
476+
477+
/**
478+
* 待传入的 给定的运行函数
479+
* 此函数接收三个参数
480+
* @param item 数据项的值
481+
* @param index 该项在数组中的位置
482+
* @param array 数组对象本身
483+
* @return 返回值根据使用外部函数不同,影响不同
484+
*/
485+
function givenFunc(item, index, array) {
486+
return item > 2;
487+
}
488+
489+
/**
490+
* every 顾名思义,必须每一项都满足 给定函数 才返回true,否则返回 false。可以类比 运算符:"&"
491+
* @type {boolean}
492+
*/
493+
var everyResult = numbers.every(givenFunc)
494+
console.log(everyResult) // false
495+
435496

497+
/**
498+
* some 只要有一项 返回true,就返回true。 可以类比 运算符:"|"
499+
* @type {boolean}
500+
*/
501+
var someResult = numbers.some(givenFunc)
502+
console.log(someResult) // true
503+
504+
505+
/**
506+
* filter 就是过滤 按照给定函数过滤,满足条件就加入返回结果数组,最后返回满足条件的所有项组成的数组
507+
* @type {Array.<number>}
508+
*/
509+
var filterResult = numbers.filter(givenFunc)
510+
console.log(filterResult) // [ 3, 4, 5, 4, 3 ]
511+
512+
```
436513

514+
以上示例演示了:every、some、filter 三个方法的使用,这三个方法主要通过给定函数判断数组每一项是否符合我们的条件
437515

438516

439517

0 commit comments

Comments
 (0)