1.1 理解
数组也是对象(对象中特殊的结构)
- 用于存储数据
- 数据存储顺序是按顺序进行排列的
- 存储的数据原则上讲是可以是任意类型;
1.2 创建
构造函数的写法:
var colors = new Array('red','blue','green');
字面量: (常用)
var colors = ['red', 'blue', 'green'];
1.3 length 属性
数组默认的属性,用于展示当前数组存储数据的长度。
数组名.length;
直接增加不存在的下标:
-
若前方存在空标,则用空值占用;(一般不这样用)
?
1.4 下标
- 数组中每一个元素都对应一个下标,
- 下标 从 0 开始依次增大。
- 最后一个元素的下标 = 数组长度(length) - 1;
?
1.5 访问数组元素
数组[下标];
1.6 修改数组元素
数组[下标] = '新值' //原值被覆盖
1.7 数组的方法(数组内置的方法)
1.7.1 push()
array.push(参数1);
参数1:输入需要插入的元素
向数组的末尾增加新元素。
1.7.2 pop()
array.pop();
删除数组末尾的元素。
1.7.4 unshift()
array.unshift(元素);
添加元素到数组的头部。
1.7.5 shift()
array.shift();
删除数组头部元素。
1.7.6 splice()
array.splice(参数1,参数2,参数3);
1、参数1:下标,参数2:删除长度,参数3:新增加元素
2、可以在任意位置给数组添加或则删除元素。
3、后面两个参数可以不写。
//删除任意位置 任意长度
colors.splice(1,1); //从下标1开始,删除一个;
//新增
colors.splice(1, 0, 'pink'); //从1开始,加入元素
//替换
colors.splice(1, 1, 'red'); //将原有位置的元素删除,并插入新元素
//删除后,会导致数组长度变化,此时需要解决该问题。
1.7.7 slice()
array.slice();
用于抽取当前数组元素中的一段元素,然后组成一个新的数组。
var newColor = color.slice(2); //从原数组中,下标为2的元素开始往后的所有元素抽取出来组成一个数组,原数组不会被影响。
var newColors = color.slice(); //不给参数,相当于是复制原数组
var newNumbe = numbe.slice(1, 2) //从下标 1 开始截取元素,至从左往右开始计算的第 2 个值
- start: 开始下标,包含;
- end:结束下标,不包含,如果不给该值,就截取剩下所有的元素。
?
1.7.8 sort()
array.sort();
?
加参数 语法:
array.sort(function(a, b) {
return 正负数;
})
- function : 可选,用来指定某种顺序进行排列的函数。
- a 和 b 分别代表第一个、第二个用于比较的元素。
- 如果 return 小于 0, 那么 a 排在 b 的前面;
- 如果 return 等于 0, 那么 a 和 b 的位置保持不变;
- 如果 return 大于 0, 那么 b 排在前面;
?
如果是数字的话,可以通过 a - b 判断大小
arr.sort(function(a, b){
return a - b; //升序
})
arr.sort(function(a, b){
return b - a; //降序
})
1.7.9 concat()
array.concat();
1.7.10 join()
array.join(参数);
- 链接数组所有元素组成一个字符串。 //默认各元素之间通过
','
链接
?
参数为:空字符串,则各元素直接链接;
参数为:'=',则以参数链接各个元素;
1.7.11 indexOf()
array.indexOf(参数);
?
colors.indexOf('元素'); //查找到数组中 元素 后,返回元素的下标,若找不到,返回 -1.
1.7.12 lastIndexOf()
array.lastIndexOf();
- 从左往右开始找,到到第一个就停止查找;
- 返回数组中第一个元素与指定相等的下标,如果找不到该元素,返回 -1.
?
colors.lastIndexOf('元素'); //擦找到数组中 元素 后,返回元素的下标,若找不到,返回 -1.
1.7.13 reverse()
array.reverse();
?
1.7.14 Set()
Set ()
-
是 Es6 中的第六个版本,新增加的数据结构,类似数组,但是没有重复元素.
-
Set 函数可以接收一个数组作为参数,用于初始化。
var list = new Set();
-
list.add(‘a’); //add()添加元素
-
通过使用 size 获取Set 长度
-
删除 Set 中的元素:list.delete()删除 Set元素 不是下标;
-
通过 has 查找 Set 中值,返回布尔值;
-
通过 Clear 清除 Set 中的所有元素;
?
Set 遍历:
// 由于 Set 结构没有键名, keys 和 values 行为一致。(属性和值相同)
[...new Set(arr)]
Set.Keys() --> 返回所有的键名;
Set.values() --> 返回所有的键值;
2.1 for 循环
for(var i = 0; i < arr.length; i++){
console.log(arr[i])
}
2.2 for in 循环
遍历数组:
// arr 是数组
// i 代表数组的下标
结构:
for(var i in arr){
console.log(i, arr[i]);
}
遍历对象:
// 对象.属性名 -- 这种方式属性名不能是变量
// 对象['属性名']
// i 是属性名
for(var i in obj){
console.log(i, obj[i]);
}
2.3 forEaach
forEaach(function(itme, index, array){})
没有规则,遍历数组
- itme 数组元素。
- index: 可选,该元素对应的下标;
- array: 可选,遍历的数组本身;
2.4 map
map(function(itme, index, array){})
修改
- 遍历数组,并且根据新的规则返回新数组。
- itme 数组元素。
- index: 可选,该元素对应的下标;
- array: 可选,遍历的数组本身;
?
// var newGoods = goods.map(function(item) {
// // toFixed(2) 保留两位小数点
// item.priceFormate = '¥' + (item.price / 100).toFixed(2); // 添加新属性
// return item;
// });
// console.log(newGoods);
2.5 filter
filter(function(itme, index, array){})
筛选
- 遍历数组,并且根据规则返回符合条件的元素组成新数组。
- 如果没有找到符合条件的就返回一个空数组;
- itme 数组元素。
- index: 可选,该元素对应的下标;
- array: 可选,遍历的数组本身;
?
// var newGoods = goods.filter(function(item) {
// // return item.price > 600000;
// return item.count > 5;
// });
2.6 find
find(function(itme, index, array){})
查找
- 遍历数组,返回数组中满足条件的第一个值。
- 如果没有找到符合条件的就返回一个 undefined;
- itme 数组元素。
- index: 可选,该元素对应的下标;
- array: 可选,遍历的数组本身;
?
// var newGoods = goods.find(function(item) {
// return item.price > 900000;
// });
2.7 every
every(function(itme, index, array){})
- 遍历数组,如果数组中,每个元素都满足条件,则返回 turen。
- 如果没有找到符合条件的就返回一个空数组;
- itme 数组元素。
- index: 可选,该元素对应的下标;
- array: 可选,遍历的数组本身;
?
2.8 some
some(function(itme, index, array){})
- 遍历数组,如果数组中,只要有一个元素满足条件,则返回 turen。
- 如果没有找到符合条件的就返回一个空数组;
- itme 数组元素。
- index: 可选,该元素对应的下标;
- array: 可选,遍历的数组本身 。
3.1 冒泡排序
?
console.time('冒泡排序:');
for(var k = 0; k < arr.length - 1; k++){
for(var i = 0; i < arr.length - 1 - k; i++){
if(arr[i] > arr[i + 1]){
var tem = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tem;
}
}
}
console.timeEnd('冒泡排序:');
console.log(arr);
3.2 选择排序
- 在未排序的序列中,找到最小的,放在开始位置;
- 再从剩余未排序元素中继续寻找较小的元素,然后放在已排序末尾。
?
console.time('选择排序: ');
for (var n = 0; n < arr.length - 1; n++) {
for (var j = n + 1; j < arr.length; j++) {
if (arr[n] > arr[j]) {
var tem2 = arr[n];
arr[n] = arr[j];
arr[j] = tem2;
}
}
}
console.timeEnd('选择排序: ');
console.log(arr);