02 - 数组

作者: 王叮叮当当响 | 来源:发表于2018-06-19 16:59 被阅读0次

    数组概念


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

    数组形式:

    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<value2){                      //如A小于B,在数组中A应该出现在B之前,则返回小于0的值

         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 - 数组

        本文链接:https://www.haomeiwen.com/subject/djtzeftx.html