数组的创建
var array = new Array(); //创建一个数组
var array = new Array([size]); //创建一个数组并指定长度,注意[size]不是上限,是长度
var array = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值
var array = [element0, element1, element2, ....]//[]直接给array赋值来创建数组。
访问数组元素
var arr = [1, 2, 3];
console.log(arr[0]) // arr[0] = 1;
console.log(arr[1]) // arr[1] = 2;
console.log(arr[2]) // arr[2] = 3;
从上面可以看出数组的起始位不是从1开始,而是从0开始的。也就是说数组的索引是从0开始。
数组的属性
- length属性
每一个数组都有一定的长度。数组的长度就是一个数组中没有元素时,被称为空数组。空数组在使用length属性时也会返回数组长度0;例如:
var arr2 = [];//空数组
console.log(arr2.length);//数组长度为0
var arr = [1, 2, 'hehe']
console.log(arr.length);//数组长度为3
数组的一些方法
改变原数组的方法有reverse,sort,push,pop,shift,unshift,splice,,slice
1.push()和pop()
push()
方法向数组的末尾添加一个或更多元素,并返回新的长度。
var arr = [1, 2, 'hehe']//定义一个数组,数组长度为3
console.log(arr); //输出 (3)[1, 2, "hehe"],(3)表示数组长度为3,[]里面是数组的三个元素
arr.push(4);//使用push()方法,将 4 push进arr这个数组
console.log(arr);//输出(4) [1, 2, 'hehe', 4]
arr.push(5, 6, 7)//将多个元素push进原数组,输出(6) [1, 2, "hehe", 5, 6, 7]
注意push()方法改变了原数组,这很重要!!!要牢记。
这里需要注意的是如果我们定义一个新的变量去接收push()后的数组,但是变量接收的不是一个新的数组,而是数组的相应长度。
var arr = [1, 2, 3];
var newArr = arr.push(4, 5, 6)
console.log(arr);//(6) [1, 2, 3, 4, 5, 6]
console.log(newArr);//6,输出是数组长度 6
pop()
方法是数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。
var arr = [1, 2, 3, 4, 5, 'loly'];
var arr1 = arr.pop(1);
console.log(arr1);//'loly', 输出数组最后一项的值
console.log(arr);//输出剩余的数组里面的内容
2.shift()和unshift()
shift()
删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。
unshift()将参数添加到原数组开头,并返回数组的长度 。
var arr = [1, 2, 3, 4, 5, 'dwawd '];
var arr1 = arr.join('-');
var arr2 = arr.shift();
console.log(arr1);//1-2-3-4-5-dwawd
console.log(arr);//(5) [2, 3, 4, 5, "dwawd "]
console.log(arr2);//1,返回删除的第一项内容
var length = arr.unshift('one', 'two');
console.log(length);//返回数组长度
console.log(arr);//(7) ["one", "two", 2, 3, 4, 5, "dwawd "]
3.sort()和reverse()
sort()
按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。并返回数组。
var arr = [2,3,1,5,4];
arr.sort();
console.log(arr);//1,2,3,4,5
var arr1 = [1,12,3,45,33];
arr1.sort();
console.log(arr1);//(5) [1, 12, 3, 33, 45]/我们发现数组的排序发生错误。这时为什么呢?
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码Unicode的顺序进行排序。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
1.若 a < b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
2.若 a = b,则返回 0。
3.若 a > b,则返回一个大于 0 的值。
也就是说:
负数的时候,表示a在前面,b在后面。
正数的时候,表示a在后面,b在前面。
所以如果我们想用sort()方法正常排序,我们需要引入一个排序函数。
var arr = [1,12,3,45,33];
function sortNumber(a,b)
{
return a - b//负数的时候,表示a在前面,b在后面。
//正数的时候,表示a在后面,b在前面。
}
console.log(arr);//(5) [1, 12, 3, 45, 33]
console.log(arr.sort(sortNumber))//(5) [1, 3, 12, 33, 45]
reverse:
方法会对反转数组项的顺序
var arr = [1,2,3,4,5];
console.log(arr.reverse());//5,4,3,2,1
它和sort()的操作方法一样。
4.splice()和slice()
splice()
这个方法是截取的意思,它有三个参数,第一个是截取开始的位置,第二个是截取的长度,第三个是参数是一组数据,代表我们要在截取的位置添加的数据。
var arr = [1, 2, 3, 4, 5];
arr.splice(1, 2, 100,188);
console.log(arr); // 1 100 188 4 5
代码中2和3被截取,替换成100,188。这里100和188都是第三个参数。
这个方法可以灵活的使用。如果我们截取的长度是0,那么就可以看作是在特定的位置上添加元素。
如果我们不填写第三个参数,就变成了指定位置的删除元素。
slice()
方法可从已有的数组中返回选定的元素.
它传入两个元素start,end。返回从start开始到end的子数组,如果end这个参数没有被设置,则返回从start开始到最后的数组元素。
var arr = [1,2,3,4,5];
arr.slice(0,3); // [1,2,3]
arr.slice(3); // [4,5]
arr.slice(1,-1); // [2,3,4]
arr.slice(-3,-2); // [3]; buggy in IE 4: returns [1,2,3]
不改变原数组的方法有,:concat, join
5.concat()
方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var arr = [1,2,3,4,5];
var arr1= ['hehe', 'haha'];
var arr2 = arr.concat(arr1);
console.log(arr2);//(7) [1, 2, 3, 4, 5, "hehe", "haha"]
console.log(arr1);//(2) ["hehe", "haha"]
console.log(arr);//(5) [1, 2, 3, 4, 5]
6.join()
join(separator)
把数组中的所有元素放入一个字符串。意思是将数组中的元素,通过separator连接,生成一个String类型的字符串。
arrayObject.join(separator)//用separator将数组中的元素连接起来然后生成字符串。
var arr = [1, 2, 3, 4, 5, 'dwawd '];
var arr1 = arr.join('-');
console.log(arr1);//1-2-3-4-5-dwawd
console.log(arr);// (6) [1, 2, 3, 4, 5, "dwawd "]
小结
以上就是对数组方法的简单实用示例,然而并没有算完成对数组的学习。我们还需要知道,以上方法究竟是怎样实现的。深究其原理,才能熟练的运用数组。后面我们还会继续深入学习数组的原理。尽情期待。