数组的定义:
new Array(length/content);
var arr = new Array();var arr = new Array(10); //--->括号里面第一位参数表示数组的长度arr.length = 10;
字面量
var arr = [];var arr = [,,] 可以
var arr = [1,2,,,,5,6]
var arr1 = [10]; // 括号里面第一位参数表示数组的第一位值
数组的读和写 在js 里面几乎报不了错 因为数组趋于对象,数组是一种特殊的对象。
arr[num] //不可以溢出读 结果为:undefined
arr[num] = xxx; //可以溢出写
数组的方法(es3.0基础,标准 es5.0在es3基础上加了新方法 es6.0 最新最强大飘逸的方法)
数组常用的方法(es3.0)
改变原数组(在原来的数组上改变)
push, pop, shift, unshift, sort, reverse
splice
不改变原数组
concat, join -----> split, toString, slice
下面就分别介绍一下:
push
在数组的最后一位添加值,可以同时添加好多位
var arr = [];
arr.push(9);
用原生js实现push 方法
var arr = [1,2];
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(); //-----3
//此时arr = [1,2]
arr.pop(); //-----2
//此时arr = [1]
pop 传参会忽略,就是无效
shift
减少东西,在数组的前面减切
unshift
添加东西,在数组的前面加
var arr = [1,2,3];
arr.unshift(0); //----->4
arr 会变成[0,1,2,3]
arr.shift(); //----->0
arr会变成[1,2,3]
reverse
把原数组逆转过来
var arr = [1,2,3];
arr.reverse() //---->[3,2,1]
splice
切片方法
var arr = [1,1,2,2,3,3];
arr.splice(从第几位开始,截取多少长度,在切口处添加新的数据[多少数据都可以])
arr.splice(1,2); //---[1,2] --->此时arr为[1,2,3,3]
arr.splice(1,2,6,7,8); //----[1,2] ----->此时arr为[1,6,7,8,2,3,3]
arr.splice(3,0,9); //------[] -----> 此时arr为[1,1,2,9,2,3,3]
arr.splice(-1,1) // ------[3] ------>arr变为[1,1,2,2,3]
实现一下splice的第一个参数为负数时 编码原理
splice = function(pos){
pos += pos > 0 ? 0 : this.length; // 若第一位为负数,就从数组的最后一位开始截取
//此时计算出来的pos >= 0 || pos < length
}
sort
让无序数组变成有序,给数组排序
var arr = [1,3,6,2,5,8,7,9,-1];
arr.sort(); //---->升序
arr.sort().reverse() // -----降序
var arr = [1,10,3,5,4];
arr.sort(); //-----> 按ascll排序 变成[1,10,3,4,5]
编程接口
sort里面写一个功能函数规则
1、必须写两个形参
2、规则:看返回值
1>当返回值为负数值,那么前面的数挡在前面
2>为正数时 ,那么后面的数在前
3>为0,不动
arr.sort(function(a, b){
// if(a > b){
// return 1;
// }
// if( a < b){
// return -1
// }
另一种写法
// return a - b; // 升序
// return b - a; //降序
});
concat 连接
var arr = [1,2,3,4,5,6,7];
var arr1 =["a",'b','c'];
console.log(arr.concat(arr1));
slice(从该位开始截取,截取到该位)
var newArr = arr.slice(1,3);
var newArr = arr.slice(1); //从第一位开始截取直到最后
var newArr = arr.slice(); //全部截取
join(‘内容’)
参数必须是字符串形式
会把数组里面的东西用字符串来连接
var arr = ['你','真','棒'];
arr.join('-'); // "你-真-棒"
arr.join('*'); // "你*真*棒"
arr.join(3); // "你3真3棒" 最好用字符串形式
split (‘内容’)
将字符字符串按内容分开返回一个数组
var arr = [1,2,3,4,5,6];
var str = arr.join('-'); //----> 将数组返回字符串 str 是 "1-2-3-4-5-6"
str.split('-'); //------> 将字符串返回数组 ['1','2','3','4','5','6']
str.split('4');// ----> ['1-2-3','5-6']