JavaScript中的数据结构与常用的遍历方式

一、数组和对象

Javascript基础的数据结构就两个,数组和对象。一般来说,大部分情况用这两个数据结构都可以解决问题。而其他的比如链表,堆栈,字典等,都可以用这两个进行模拟。

数组

创建一个数组

1
2
3

var arr = ['wanhai','jiali','chenglong'];

对象
1
2
3
4
5
6
7
8
9

var obj = {}

obj = {
name:'wanhai',
age:'30',
method:function(){alert('eat')}
}

Map 和 Set

Map和Set是ES6后新增加的数据结构,Map有点类似我们在PHP里使用的关联数组。但在JavaScript里,它具有数组和对象无法比拟的查找速度。
Set和Map类似,但是由于他存储的只是 value,而且,不保留相同的值,因此可以很方便的实现数组去重

Map
1
2
3
4
5
6

var map = new Map([
['wanhai',98],
['jiali',88]
])

Set
1
2
3

var map = new Set([1,2,3]);

遍历

遍历也叫迭代,一般是为了在一个数组结构,比如数组或者对象里,有规律的取出数据。

1、for循环
1
2
3
4
5
6
7

var arr,i,len
arr = ['wanhai','jiali'];
len = arr.length;
for (i = 0; i < len; i++ ) {
console.log(arr[i]);
}
2、for in循环

for in 循环是对 for循环的进一步简化

1
2
3
4
5
6
7

var arr,x
arr = ['wanhai','jiali'];
for (x in arr ) {
console.log(arr[x]);
}

3、for of循环

for of循环和for in循环的用法和作用大抵一致,但for in循环因为历史问题,它的遍历遍历的是数据结构的属性名称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

var arr,i
arr = ['wanhai','jiali'];

for (i in arr) {
console.log(i)
}

//0,1

// 但是,假如给这个数组添加新的元素

arr.name = 'chenglong';

for (i in arr) {
console.log(i)
}

// 0,1,name

所以,我们要引入for…of循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

var arr,i
arr = ['wanhai','jiali'];

for (i of arr) {
console.log(i)
}

//0,1

// 但是,假如给这个数组添加新的元素

arr.name = 'chenglong';

for (i of arr) {
console.log(i)
}

// 0,1,

foreach 循环

foreach循环有在for的基础上进一步简化了遍历的步骤.foreach使用回调函数,获得值,回调函数有三个默认参数,分别是index,element,array,这三个参数的结果,就是迭代的结果。

1
2
3
4
5
6
7

var arr = ['wanhai','jiali']

arr.foreach(function(index,element,arr){
console.log(index,element,arr),
})