1.数组
数组本质上是一个Object,
length属性是可读写的,截断或者清空一个数组的方法是 设置它的length属性,length是数组区别对象的一个明显标志
多维数组:JavaScript本身是不支持多维数组的,可以通过设置数组的元素为数组的方法来实现类多维数组的功能和形式
数组方法:
join:String.split反方法
var a = [1, 2, 3]; // Create a new array with these three elements var s = a.join(); // s == "1,2,3" s = a.join(", "); // s == "1, 2, 3"
reverse:反转过来
var a = new Array(1,2,3); // a[0] = 1, a[1] = 2, a[2] = 3 a.reverse(); // now a[0] = 3, a[1] = 2, a[2] = 1 var s = a.join(); // s == "3,2,1"
sort:排序方法,不传参数的情况下,默认按数值方式排序
var a = [33, 4, 1111, 222]; a.sort(); // Alphabetical order: 1111, 222, 33, 4 a.sort(function(a,b) { // Numerical order: 4, 33, 222, 1111 return a-b; // Returns < 0, 0, or > 0, depending on order });
concat:数组连接操作,会展开数组,但是不会递归的展开数组
var a = [1,2,3]; a.concat(4, 5) // Returns [1,2,3,4,5] a.concat([4,5]); // Returns [1,2,3,4,5] a.concat([4,5],[6,7]) // Returns [1,2,3,4,5,6,7] a.concat(4, [5,[6,7]]) // Returns [1,2,3,4,5,[6,7]]
slice:
var a = [1,2,3,4,5]; a.slice(0,3); // Returns [1,2,3] a.slice(3); // Returns [4,5] a.slice(1,-1); // Returns [2,3,4] a.slice(-3,-2); // Returns [3]
splice:
var a = [1,2,3,4,5,6,7,8]; a.splice(4); // Returns [5,6,7,8]; a is [1,2,3,4] a.splice(1,2); // Returns [2,3]; a is [1,4] a.splice(1,1); // Returns [4]; a is [1]
push() and pop():栈的实现
var stack = []; // stack: [] stack.push(1,2); // stack: [1,2] Returns 2 stack.pop(); // stack: [1] Returns 2 stack.push(3); // stack: [1,3] Returns 2 stack.pop(); // stack: [1] Returns 3 stack.push([4,5]); // stack: [1,[4,5]] Returns 2 stack.pop() // stack: [1] Returns [4,5] stack.pop(); // stack: [] Returns 1
unshift() and shift():栈实现,只不过是从数组头插入和移出
var a = []; // a:[] a.unshift(1); // a:[1] Returns: 1 a.unshift(22); // a:[22,1] Returns: 2 a.shift(); // a:[1] Returns: 22 a.unshift(3,[4,5]); // a:[3,[4,5],1] Returns: 3 a.shift(); // a:[[4,5],1] Returns: 3 a.shift(); // a:[1] Returns: [4,5] a.shift(); // a:[] Returns: 1