Javascript数组
一.数组的创建方法
- 数组字面量
var arr = [1,2,3,,,5,6]; - 构造数组
new Array(length/content);
var arr = new Array(1,2,3,4,5); - 二者区别
var arr = new Array(10);
//相当于建立长度为10的稀松数组
var arr1 = [10];
//建立一个第一位为10的数组
二.数组的读和写
- arr[num] //不可以溢出读 结果undefined
js的数组是基于对象的,
var arr = [ ]; //建立空对象
访问arr[10],出现undefined,不会出现报错 - arr[num] = xxx; //可以溢出写
可赋值 arr[10] = "abc", arr.length=11
三.数组常用的方法
1.改变原数组
(1)push, pop, shift, unshift, sort, reverse
- push:在数组最后一位添加数据,可以同时添加多位。
var arr = [ ];
//arr.push(10);
var arr = [ ];
//数组原型,push方法
Array.prototype.push = function(){
for(var i = 0; i < arguments.length; i++){
this[this.length]=arguments[i];
}
return this.length;
}
- pop:把数组最后一位剪切出去
var arr = [1,2,3];
arr.pop();
//变为arr = [1,2],pop传参无用,会自动忽略
var arr = [1,2,3];
var num = arr.pop();
//num = 3,把最后一位剪切出来
- shift:把数组第一位剪切出去
- unshift:在数组前面添加数据,可以同时添加多位。
var arr = [1,2,3];
arr.unshift(-1,0);
//arr.length = 5;
//arr = [-1,0,1,2,3]
- sort:给原数组排序
例1:
var arr = [1,3,4,0,-1,9]
arr.sort();
//arr =[-1,0,1,3,4,9]
例2:当做字符,按照ASCII码排序
var arr = [1,3,5,4,10]
arr.sort();
//arr = [1,10,3,4,5];
由于排序不一定符合自己需求,所以sort留了个编程接口,填充自己的方法,按照自己想用的任何一种方法排序。
方法:
//1.必须写两个形参
//2.看返回值
//1)当返回值为负数时,那么前面的数放在前面
//2)当返回值为正数时,那么后面的数在前
//3)为0,不动
(冒泡排序)
//升序
var arr = [1,3,5,4,10]
arr.sort(function(a,b){
if(a>b){
return 1;
}else{
return -1;
}
});
等同于下方
//升序
var arr = [1,3,5,4,10]
arr.sort(function(a,b){
return a-b;
//降序
var arr = [1,3,5,4,10]
arr.sort(function(a,b){
return b-a;s
sort可用作乱序
var arr = [1,2,3,4,5,6,7]
arr.sort(function(){
return Math.random()-0.5;//随机产生正负数
//Math.random();产生(0,1)之间的随机数字
});
- reverse:把原数组逆转
var arr = [1,2,3];
arr.reverse();
//arr = [3,2,1]
(2)splice:截取
arr.splice(从第几位开始,截取多少的长度,在切口处添加新的数据);
var arr = [1,1,2,2,3,3];
arr.splice(1,2);
//返回值[1,2]
//arr = [1,2,3,3]
var arr = [1,1,2,2,3,3];
arr.splice(1,1,0,0,0);
//返回[1];
//arr = [1,0,0,0,2,2,3,3];
通常多用于,插进数据
var arr = [1,2,3,5];
arr.splice(3,0,4);
//arr = [1,2,3,4,5];
2. 不改变原数组
concat, join->split, toString, slice
- concat:拼接
不改变原数组,产生了一个新数组
var arr = [1,2,3,4,5,6];
var arr1 = [7,8,9];
arr.concat(arr1);
//返回[1,2,3,4,5,6,7,8,9]
//不改变原数组,产生了一个新数组
- join:参数一定要是字符串形式,然后这个字符串参数,会把数组里面每一位连接起来,并且返回字符串。(不传参数按逗号连接)
var arr = [1,2,3,4,5,6];
arr.join("-")
//arr = "1-2-3-4-5-6"
应用
var str = "alibaba";
var str1 = 'baidu';
var str2 = 'tencent';
var str3 = 'toutiao';
var str4 = 'wangyi';
var str5 = 'nv';
//散列结构,省去栈内存来回存取的步骤
var arr = [str, str1,str2,str3,str4,str5];
arr.join("");
- split:(与join可逆,是字符串的方法,不是数组的,但与数组可逆)
按照什么拆分成数组。
例1
var arr = [1,2,3,4,5,6];
var str = arr.join("-")
//str = "1-2-3-4-5-6"
str.split("-");
//str = ["1","2","3","4","5","6"]
例2
var arr = [1,2,3,4,5,6];
var str = arr.join("-")
//str = "1-2-3-4-5-6"
str.split("4");
//str = ["1-2-3-","-5-6"]
- toString:将数组转换成字符串
- slice:截取
两个参数时:
slice(从该位开始截取,截取到该位)
var arr = [1,2,3,4,5,6];
var newArr = arr.slice(1,3);
//newArr = [2,3],从第1位截取,到第3位,不改变原数组
一个参数时:
slice(从该位开始截取一直截取到最后)
var arr = [1,2,3,4,5,6];
var newArr = arr.slice(1);
//newArr = [2,3,4,5,6]
无参数时,整个截取