Array在JavaScript里面很常用,讲真的,平时开发除了循环数组和push数组之外,对于数组的其他方法和属性几乎都是用到的时候百度。今天自己整理一些数组的概念和方法,希望自己能记住,也为了以后使用的时候有地方直接查看。当然,太基础的东西就不说了。
首先创建数组有两种方法:使用Array构造函数和数组字面量方法。
var arr = new Array();
如果里面传递一个数字,就表示这个数组长度,如果里面传递对个参数。表示数组的内容。
var arr = new Array(3); //长度为3
var arr = new Array(3, 2); //长度为2,元素为3 2的数组
字面量的方法应该是我们最常用的:
var arr = [1, 2, 3];
数组可以单独设置长度,比如:
var arr = [1, 2, 3]
arr.length = 1;那么arr直接等于[1],如果arr.length = 100;那么数组长度为100,除了有元素的这几个之外,其他的输出都是undefined(arr[50] => undefined)
我们都知道Array实际上也是一个对象,我们用typeof检测数组的时候得到的是object,所以检测是否是数组要用instanceof arr instanceof Array,返回一个布尔值。
Array提供了一些列的方法:
push:接收任意数量参数,添加到末尾,改变原数组,返回添加后的数组长度。
var arr = [88];
var len = arr.push(1, 2, 3, 4);
console.log(len); //5
console.log(arr); //[88, 1, 2, 3, 4]
pop:移除数组最后一位,改变原数组,返回移除的元素。
var arr = [1, 2, 3, 4];
var item = arr.pop();
console.log(item); //4
console.log(arr); //[1, 2, 3]
shift:移除第一个元素,改变原数组,返回移除的元素。
var arr = [1, 2, 3, 4];
var item = arr.shift();
console.log(item); //1
console.log(arr); //[2, 3, 4]
unshift: 接收任意数量参数,添加到最前面,改变原数组,返回添加后的数组长度
var arr = [88];
var len = arr.unshift(2, 3, 4);
console.log(len); //4
console.log(arr); //[2, 3, 4, 88]
reverse:反转数组顺序,改变原数组
var arr = [2, 3, 4];
arr.reverse();
console.log(arr);
sort:接收一个方法参数,没传默认根据字符串结果排序(不推荐),方法里面两个参数,返回-1、1、0。改变原数组。
var arr = [17, 3, 9, 16, 10, 2];
arr.sort(function (a, b) {
console.log(arr);
console.log(a);
console.log(b);
console.log('-----------');
return a - b;
});
sort方法算是比较特殊的方法,有兴趣可以看看打印输出。
concat:基于之前的数组,把参数都拼接到数组末尾,不改变原数组,返回一个新的数组。接收任意多个参数。concat可以用来深拷贝。
var arr = [10, 2];
var newArr = arr.concat(9, 'fghkl', {name: 'wade'}, [8, 9]);
console.log(arr);
console.log(newArr);
slice:截取数组,不改变原数组,返回一个新的数组。如果参数超出数组的范围返回空数组,如果是传入负数则数组长度加上负数,然后截取。
传入一个参数,默认从当前位置截取到最末尾:
var arr = [10, 2, 8, 6, 7];
var newArr = arr.slice(1);
console.log(newArr); //[2, 8, 6, 7]
传入两个参数,从两个参数区间截取:
var arr = [10, 2, 8, 6, 7];
var newArr = arr.slice(1,4);
console.log(newArr); //[2, 8, 6]
splice:删除、替换、插入,替换跟插入的方法一样,改变原数组,返回删除的数组。
传入两个参数(如果只有一个,默认第二个为1):
var arr = [10, 2, 8, 6, 7];
var newArr = arr.splice(1,3);
console.log(newArr); //[2, 8, 6]
console.log(arr); //[10, 8, 7]
传入三个参数及以上相当于先删除然后插入:
var arr = [10, 2, 8, 6, 7];
var newArr = arr.splice(2, 0, 9, 45, 63, 78);
console.log(newArr); //[]
console.log(arr); //[10, 2, 9, 45, 63, 78, 8, 6, 7]
查找位置:indexOf、lastIndexOf,一个从头开始有个从末尾开始,接收两个参数,第一个是想要查找的元素,第二个是从哪里开始查找,找到其中一个之后就停止,存在返回元素下标,不存在返回-1。
var arr = [10, 2, 8, 9, 8, 6, 7];
console.log(arr.indexOf(8, 2)); //2
console.log(arr.indexOf(8, 3)); //4
console.log(arr.lastIndexOf(8)); //4
先整理了基础的用法,之后会整理一下循环遍历和迭代的方法。
网友评论