02 - 数组

数组概念


数组:一种数据结构,一组按顺序排列的集合。用 [  ] 表示,元素之间用  ,逗号来分割,数组可以包括任意数据类型,通过索引来访问每个元素,可以增删、查找、传递。

数组形式:

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']

你可能感兴趣的:(02 - 数组)