数组
数组(Array):一个对象
-
用来存储数据
-
数组使用数字作为索引操作元素
-
索引(index):从0开始的就是索引
-
存储性能好
-
// 创建数组对象 var arr = new Array(); // 添加元素 arr[0] = 10; // 向索引为0添加10 arr[1] = 20; arr[10] = 100; console.log(arr[1]); //10 console.log(arr[100]); // undefined // 获取数组长度 // console.log(arr.length); // 2 // 对于非连续的数组,使用length会获取数组的最大索引+1 console.log(arr.length); // 11 console.log(arr); // 0,1,,,,,,,,10; //尽量不要创建非连续的数组 // 修改数组长度 var arr = new Array(); // 添加元素 arr[0] = 10; // 向索引为0添加10 arr[1] = 20; arr.length = 10; // 相当于在内存中先开辟空间 console.log(arr); // 如果修改后的length大于,就会空出来 // 小于只打印修改的长度 // 向数组的最后一个位置添加元素 arr[arr.length] = 60; // python list.append(60)
数组字面量
// 使用字面量创建数组
var arr = [];
// 使用字面量创建数组时,可以在创建时指定数组中的元素
var arr = [1,2,3,4,5,6];
console.log(arr[0]); // 1
// 使用构造函数创建数组
var arr2 = new Array(10,20,30);
arr[10]:创建一个只有10的数组
arr2[10]:创建了一个长度为10的数组
// 数组中可以放任意类型的数据类型
arr = ['hello',2,true,null,undefined];
// 放入对象
var obj = {name:'in'};
arr[arr.length] = obj;
//放入函数
obj1 = [function(){alert('hello array')}];
arr[arr.length] = obj1;
arr[0](); // 调用函数
// 数组中可以放数组
arr = [[1,2],[2,3]];
数组的方法
push
- 向数组的末尾添加一个或多个元素,并返回数组的新的长度
- 可以将要添加的元素作为方法的参数传递
arr = ['hello','ki'];
arr.push('wha','asd','fr'); // 同时添加三个元素
var res = arr.push('wha','asd','fr'); // 返回新数组的长度
pop
- 删除数组的最后一个元素
arr.pop(); // 删除'fr'
var res = arr.pop(); // 返回被删除的元素
unshift
- 向数组的开头添加或多个元素,并返回新的数组长度(原数组)
arr.unshift('ko'); // 往前面加 he python 的 insert(0,'ad');
shift
- 删除数组第一个元素,并将被删除的元素作为返回值,返回
slice
-
截取指定的元素,并将其封装到新数组中返回
-
var arr = ['a','b','c','d']; var res = arr.slice(0,2); // ['a','b','c']
splice
-
删除原数组中的指定元素(原数组)
-
var arr = ['a','b','c','d']; var res = arr.splice(0,2); // 将删除的元素返回 ['a','b','c']
-
可以传递一些新的元素
-
var arr = ['a','b','c','d']; var res = arr.splice(0,1,'e','f'); console.log(arr); // ['e','f','b','c','d']
-
使用splice做数组的去重
-
var arr = [1,1,23,3,4,2,4,3]; for(var i =0; i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i] == arr[j]){ arr.splice(j,1); // 从j开始删除一位 j--; // 再次比较这个位置 } } }
-
concat
-
concat() 可以连接两个或多个数组,并将新的数组返回
-
var arr = ['a'] ; var arr1 = ['b']; var arr2 = ['c'] var res = arr.concat(arr1,arr2,'d','e');
join
-
可以将数组转换成一个字符串
-
var arr = [1,2]; var res = arr.join(,); // 在join的参数中可以指定一个字符串作为一个参数,这个字符串讲会成为字符串的连接符
reverse
-
反转数组(修改原数组)
-
var arr = [1,2]; arr.reverse();
-
sort
-
可以用来对数组进行排序(影响原数组)
-
var arr = [1,2]; arr.sort(); // 按照unicode编码进行排序 arr.sort(function(a,b){ return 0; // 如果返回大于0 元素交换位置;等于0 元素不变;小于0,也不交换位置 }) arr.sort(function(a,b){ if(a > b){ return 1; }else if(a < b){ return -1; }else{ return 0; } }) //升序排列 arr.sort(function(a,b){ return a-b; }) // 降序排列 arr.sort(function(a,b){ return b - a; })
数组的遍历
遍历:就是将数组中的东西统统取出
var arr = ['a','b','c','d','e'];
for(var i = 0;i < arr.length;i++){
console.log(arr[i]);
}
forEach : 遍历数组 (这个方法支持ie8以上)
-
forEach() 需要一个函数作为参数
-
由函数内部自动调用函数,我们称为,回调函数
-
var arr = ['a','b','c','d','e']; arr.forEach(function(){ console.log('hello') }) // 数组中有几个元素就执行几次,每次执行,浏览器都会将遍历到的元素以实参的形式传递进来,我们可以定义形参,来读取这些内容 // 浏览器会在回调函数中传递三个数 var arr = ['a','b','c','d','e']; arr.forEach(function(a,b,c){ // a 就是遍历的值 b 索引 c 正在遍历的数组 console.log(a) })