数组
数组的定义
1.数组字面量(直接量)
var arr = [1, 2, 3];
2.利用构造函数
new Array(length/content)
var arr = new Array(1,2,3,4); arr = [1,2,3,4]
如果只传一位参数就代表数组的长度。注意:数组只能溢出写不能溢出读。
数组方法(重点)
能改变原数组的7种方法
1. arr.push( )
从数组最后添加元素。
var arr = [1,2,3,4]; arr.push(123,[],{})
仿写一个push方法
Array.prototype.push = function(target){ var len = this.length; (this[len] = target; //一个参数) for(var i = 0; i < arguments.length; i++){ this[this.length] = arguments[i];//多个参数 }
2. arr.pop( ) 不用传参数
剪切数组最后那个元素并返回。
3. arr.shift( ) 不用传参数
在前面剪切元素并返回。
4. arr.unshift( )
在数组前面添加元素。可以一个,也可以多个,例如
var arr = [1,2,3,4]; arr.unshift(0);//******arr = [0,1,2,3,4]
var arr = [1,2,3,4]; arr.unshift(-2,-1,0);//************arr=[-2,-1,0,1,2,3,4]
5. arr.reverse( )
将数组元素逆转。
6. arr.splice( )
可传入多个参数,返回的是剪切的数组,第一个参数是开始操作位,第二个是剪切长度,之后的参数都是从操作位添加元素。
var arr = [1,2,3,4]; arr.splice(0,2); //返回的是剪切的数组 [1,2],这时候arr=[3,4]
当剪切长度是0的时候,可以用来添加元素 这种方法常用来插入数据
var arr = [1,2,3,4]; arr.splice(0,0,5,6,7); //返回的是 [] ,这时候arr= [5,6,7,1,2,3,4]
7. arr.sort( ) 用来排序
arr.sort( )自己的方法是通过ASCII进行排序。一般我们都是自定义方法,自定义规则。关注返回值,如果返回的是正数,那么后面的数在前面,如果返回的是负数,那么前面的数
在前。操作数,会将数组中的任意的两位数传到函数里面,当做a,和b,然后根据返回值,按照上述方法进行排序。例如:
var arr = [2,9,6,1,7,8,3]; arr.sort(function (a,b) { if(a > b){ return 1; }else{ return -1; } } //arr [1,2,3,6,7,8,9] 正序 arr.sort(function (a,b){ if(a < b){ return 1; }else{ return -1; } } //arr [9,8,7,6,3,2,1]; 倒序
简写如下:
var arr = [1,6,2,7,8] arr.sort(function (a,b) { return a-b;//正序 return b-a;//倒序 })
将正序的数组随机排列:
var arr = [1,2,3,4,5,6,7,8]; arr.sort(function () { var ret = Math.random() - 0.5; return ret; })
将对象按照某个属性排列:
var arr = [{name:‘大明‘,age:20},{name:‘小明‘,age:18}] arr.sort(function (a,b){ return a.age - b.age; }
以上7种方法都能改变原数组 push() pop() shift() unshift() reverse() splice() sort()
不能改变原数组的2种方法
1. arr.concat( )
对两个数组进行连接
var arr = [1,2,3]; var arr1 = [2,3,4]; var arr2 = arr.concat(arr1); // [1,2,3,2,3,4]
2. arr.join( )
将数组按照传进去的符号进行连接,最后转化为字符串返回。默认是逗号连接。
var arr = [1,2,3]; arr.join("-") // "1-2-3"
3. arr.toString( )
将数组的每一位转化为字符串并返回
var arr1= [[],1,2,3]; arr1.toString(); var arr2 = [{},1,2,3]; arr2.toString();
结果如下:
4. str.split( ) 这是字符串的方法,操作的是字符串,刚好与join相反
将字符串按照传进去的符号拆分为字符串形式的数组
var arr = [1,2,3]; var str1 = arr.join("-") // "1-2-3" str.split(‘-‘); //["1","2","3"]
从上面我们可以知道,这个方法可以将数组里面的元素变成字符串的形式。
接下来看到例题巩固一下: 用最快的方法将以下字符串拼接为字符串:“上海”,“北京”,“中山”,“深圳”,“广州”,“梅州”
方法一: 栈操作(耗性能)
var str = ""; str += "上海"+“北京”+“中山”+“深圳”+“广州”+“梅州”;//"上海北京中山深圳广州梅州"
方法二: 堆操作(利用数组)
var arr = ["上海","北京","中山","深圳","广州","梅州"]; arr.join(‘‘); //"上海北京中山深圳广州梅州"