js基础知识(三)
这篇主要写关于array(没有讲ES5中的一些新方法)
数组介绍
数组是值的有序集合。在js中数组的值可以是任何类型。每个值对应的位置成为索引;js数组是js对象的特殊形式,所以有一种说法是,在js中一切皆对象,js中允许的索引为32位
数组的基本操作
- 数组的创建
数组创建的最简单方法是数组直接量;数组的另外一种方法就比较麻烦1
2var arr = [];
var arr1 = [1,'2',{},[1,2],false];所以我们通常使用数组直接量的方法进行创建,因为简单太多了1
2
3var arr = new Array(); //相当于 var arr = [];
var arr = new Array(10); //相当于创建了一个长度为10的空数组
var arr = new Array(1,'2',{},[1,2],false); //这个就相当于 var arr1 = [1,'2',{},[1,2],false]; - 数组的基础操作
- 查找
通过[]中添加索引进行查找1
2
3var arr = [1,2,3];
arr[0] // 1
arr[1] // 2 - 添加
添加和改写array中的元素是一样的1
2
3var arr = [1,2,3];
arr[3] = 4; //arr为[1,2,3,4];
arr[0] = 0; //arr为[0,2,3,4]; - 数组的长度
数组的长度就数组中元素的个数 通过 ‘ .’的形式使用,并且可以通过改变数组的长度进行删除和添加数组1
2
3var arr = [0,1,2,3];
arr.length = 3; // arr 为 [0,1,2]
arr.length = 4; // arr 为 [0, 1, 2, empty] empty是空值的意思
- 查找
- 数组方法
- join()
该方法可以将数组拼接成字符串,返回值为拼成的字符串,有一个参数,使用该参数进行拼接,如果没有的话,默认为以’,’进行拼接,如果数组中的元素也是数组也会被打开进行拼接,如果是对象的话,会使用Object.prototype.toString(item); 这样的话就会拼成’[object Object]’,如下1
2
3
4
5
6var arr = [1,2,3];
arr.join(); // '1,2,3'
arr = [[[1,2],[3,4]],[5,6]];
arr.join(); // '1,2,3,4,5,6'
arr = [[1,2,3],{name:'pde',age:18}];
arr.join() // '1,2,3,[object Object]' - reverse()
逆转,改变了原数组,返回值为原数组 - sort()
排序,如果没有参数,则进行最简单的排序,按照数字大小和字母表进行排序,注意字符串的比较与数字不同,字符串是由第一位开始比较,如果数组中的元素不是原始值,进行隐式类型转化比较,其中为undefined的元素,会被放到数组的尾部;sort最强大点,在于它的参数,它的参数是一个函数 通过返回值进行排序;返回值为原数组1
2
3
4var a = [33,4,1111,222];
a.sort(function(a,b){
return a - b; // 返回值为正数,a,b互换位置,ab分别是前一个元素和后一个元素的值,负数不变
}); - concat()
返回值为一个新数组,新数组的元素包括调用concat的数组和其中的参数,如果其中的参数为数组,连接的是该数组中的元素,并不是数组本身,但并不会扁平化数组的数组 - slice()
返回数组的一段,第一个参数为起始位置,第二个参数为终止位置,若没有第二个的话,则一直到结尾,如果参数为负数的话,相当于再加上length的数为参数1
2var a = [1,2,3,4,5];
a.slice(0,3); // 返回[1,2,3] - splice()
这个方法比较6,一共可以填多个参数;第一个为删除的起始位置,第二个为删除的个数,后面的为插入其中的元素;返回值为剪切下来的元素组成的数组,会改变原数组 - push()和pop(); unshift()和shift()
push()为向数组的后面添加元素,返回数组长度;pop()为在数组后面删除一个元素,返回删除的值;unshift()为在数组前面添加元素,返回数组长度;shift()为在数组前面删除一个元素,并返回删除的值 - toString()
这里的toString()与没有参数的join()结果一样
- join()