数组概念
数组:一种数据结构,一组按顺序排列的集合。用 [ ] 表示,元素之间用 ,逗号来分割,数组可以包括任意数据类型,通过索引来访问每个元素,可以增删、查找、传递。
数组形式:
var a = new Array(); //括号内空
var b = new Array(data); //必须是数字,必须是1位(不能10,2),指数组内包含几个元素,是可以赋值动态增长的
var c = new Array(d1,d2,...,dn); //把数值放进去,如果只有一个d1,那会等于第二种的size
var d = [ d1,d2,...dn] //字面量方式创建数组,从0开始赋值,第一位d1是第0项
var dd = [1, 3, 5, ‘hello’, true, null]
dd[0]; //返回索引第1个元素是从0开始,即1
dd[5]; //返回索引第5个元素,即 true
访问数组:
a[0] 访问数组a中的第1个数据
a[x] = n 在数组a中创建了一个新的单元 x , 并且赋值n
可扩展的数组长度示例:
var colors = ['red', 'blue', 'green'];
colors.length = 4; //数组的长度定为4,实际为3,此次第4是undifind 的
alert(colors[3]); // undifind 但不是错误
colors[colors.length] = 'black'; // colors.length 是比实际数组数大1个的,colors[3] 实际的数组长度是4
colors[colors.length] = 'brown'; //这种是可扩展的很好的写法,即定义 当前数组的最后一位加1 的数组颜色
数组的操作
堆栈: push 、pop 队列:shift 、unshift
push() 向末尾添加元素 pop() 删除最后一个元素
shift() 删除第一个元素 unshift() 给前端添加一个元素并返回最新的元素长度
var t = ['a', 'b'];
t.push('A', 'B'); // push()末尾增加两位,返回数组的长度为4
t ; // ['a', 'b', 'A', 'B']
t.pop(); // pop()去掉最后一位'B'
t.pop(); // pop()去掉最后一位'A'
t;// ['a', 'b']
t.shift(); // shift()去掉第一位‘a’
t; //['b']
排序:sort 、 reverse
shot() 按照默认顺序顺序(不是大小顺序) 、 reverse()反转输入顺序,从后往前
var t = ['B', 'A', 'D', 'C'];
t.sort();
t; // ['A', 'B', 'C', 'D']
t.reverse();
t; // ['A', 'B', 'C', 'D'];
sort()默认是按照字符串的字母顺序排序,如果函数为数值,就需要提供一个函数,用来比较并返回一个用于说明两个值的相对顺序的数字。见下function示例代码:
function compare(value1,value2){
if (value1
return -1;
}else if (value1>value2){ //如A大于B,在数组中A应该出现在B后面,则返回大于0的值
return 1;
}else { //如两个参数相等,返回0
return 0;
} }
var box = [0, 1, 5, 10, 15] // 假如改为字符串,则顺序还按字符串字母顺序['0', '1', '10', '15', '5']
alert(box.sort(conpare)); // 返回 ['0', '1', '5', '10', '15'] 此时就调用了compare的函数比较
链接 concat
concat() 当前的数组和另一个数组连接起来,并返回一个新的数组
var ord = ['A', 'B', 'C', 'D'];
var add = ord.concat([1, 2, 3]);
add; //数组add返回数组相加后的结果 ['A', 'B', 'C', 'D', 1, 2, 3]
ord; //没有改变依旧返回 ['A', 'B', 'C', 'D'];
连接符: join
join() 把数组的每个元素之间都用指定字符连接起来,并返回一个用-链接的字符串,原数组不变化还是object
var ord = ['A', 'B', 'C', 'D'];
ord.join('-');//数组元素间加入字符 - ,返回‘A-B-C-D’
多功能: splice
splice(index, howmany, itema,...,itenN) 修改数组的万能方法,分别是(必须|整数|开始位置,必须|删除的个数,可选| 插入新的元素),返回一个新的数组
var ord = ['red', 'green', 'black', 'brown'];
ord.splice(1, 2);//从第1个元素‘green’位置开始 ,删除2个元素,没有插入新的元素
ord; // 得到 ['red', 'brown'];
ord.splice(0, 0, 'yellow');//从第0个元素‘brown’位置开始 ,删除0个元素,并插入新的元素 ‘yellow’
ord; // 得到 ['red', 'yellow', 'brown'];
索引 indexOf 、 slice
indexOf() 搜索一个指定元素的位置 slice()从数组某个元素截取
var ord = [10, 20, '30', 'red', 'green'];
ord.index(10) ;//数组ord内元素10的索引位置为 0
ord.index(30); //数组ord内元素30的索引位置没找到,返回-1,区分30 和‘30’
ord.index('red'); //数组ord内元素‘red’的索引位置为 3
ord.slice(1, 3); //从1开始索引,到3结束,但不包括3 [20, '30']
ord.slice(2); //从2开始索引,直到结束 ['30', 'red', 'green']