zoukankan      html  css  js  c++  java
  • js 数组知识复习

    2.Array类型

    2.1 创建数组

    两种方式:
    1.new Array();

    //创建一个空数组
    var arr1 = new Array();
    //创建一个长度为10的空数组,
    var arr2 = new Array(10);
    //创建一个包含一个字符串good的数组
    var arr3 = new Array("good");

    特别说明:当传进去括号中的只有一个值,这个值是数值的话,就会创建长度为这个数值的数组;如果是其他值,那就是包含一个这个值的数组。

    2.数组字面量,使用方括号:

    // 创建空的
     var fish = [];
     //创建有值的,在括号里添加
     var cars = ["BMW","BenZ","Ferrari"];
     //注意,创建数组不要留空项。浏览器兼容性问题,IE8或以前版本会认为这是有3项,下面这种不建议。
     var nums = [1,2,];

    2.2 访问数组中的值

    和其他语言一样下标访问(下标从0开始):

    //创建数组
    var cars = ["BMW","BenZ","Ferrari"];
    console.log(cars[0]);  //BMW
    console.log(cars[2]);  //Ferrari
    
    //修改数组某个值,对其重新赋值就像
    cars[0]  = "lala";

    2.3 常用属性和方法

    这里给出常用的属性和方法,更详细的在js的文档里面有。

    1.length属性:返回数组的长度。

    var num = [1,2,3,4,5]
    console.log(arr.length);  //5
    //妙用:通过改变数组的length可以改变数组长度
    arr.length = 10;  //现在num 数组长度为10了
    console.log(num); //[1,2,3,4,5,,,,,]  后面5个值是空的

    2.Array.isArray()方法:判断对象是不是数组

    //用了判断改对象是不是数组
    var arr = [];
    console.log(Array.isArray(arr));   //true
    console.log(Array.isArray("s");    //false

    3.join()方法:改变数组分隔方式,返回新的分隔符字符串

    //原来是使用逗号连接的
    var arr = [1,2,3,4,5];
    //用|连接,注意只是返回字符串,不会改变数组里面的连接方式
    console.log((arr.join("|"));  //'1|2|3|4|5'
    console.log(arr);  //[1,2,3,4,5]  还是一样用逗号的

    4.栈方法:pop()和push()组合使用实现栈的先进后出

    //引入这两方法是为了用数组实现栈的功能
    //push() :从数组最后添加数据
    var stack = new Array();
    //添加一个10
    stack.push(10);
    //添加一个5
    stack.push(5);
    //添加一个100
    stack.push(100);
    //现在stack中有3个数值
    console.log(stack);   //[10,5,100]
    
    //pop() :从数组最后删除并返回该数据
    stack.pop();  //100  100被删除
    console.log(stack);   //[10,5]  剩下两数
    

    5.队列方法:shift()和push()组合使用实现先进先出

    这里就不再举例了,类似与栈的操作,只是操作的函数不同,栈的pop是从后面删除,而队列的shift是从前面删除,这样就先进先出了。

    6.重排序方法:sort()和reverse()

    //sort()默认是按照ascii码表排序的,所以会出现下面这种情况
    var arr = [5,12,18,1];
    console.log(arr.sort());  //[1,12,18,5]
    //为了可以对数字正常排序,为sort传入一个比较函数
    function comp(a,b){
        return a-b;
    }
    //再来排序
    arr.sort(comp);
    console.log(arr);  //[1,5,12,18]  这次正确了
    
    //reverse()是将数组完全颠倒
    arr.reverse();
    console.log(arr);  //[18,12,5,1]

    7.合并和剪切:concat() , slice()

    //1.concat() 在该数组的基础上添加元素,返回一个新数组(不会改变原数组)
    var arr1 = [1,2,3];
    //在arr1基础添加4,5,6,并返回给arr2,不会改变arr
    var arr2 = arr1.concat(4,5,6);
    console.log(arr2);  //[1,2,3,4,5,6]
    
    //2.slice() 通过传入开始和终点值来剪切数组,并返回新数组
    var  arr3  = arr2.slice(1,5);
    console.log(arr3);  //[2,3,4,5]

    8.最强大的数组方法:splice()
    删除:接受两个参数,第一个是开始删除位置,第二个是删除的个数,返回一个删除项的数组

    //用来删除
    var arr = [1,2,3,4,5,6,7];
    var del_arr = arr.splice(0,4);  //从0位开始删除4项,即前4项
    console.log(del_arr);  //[1,2,3,4]
    console.log(arr);  //[5,6,7]  arr数组剩下后面3项了

    插入:输入3个参数,起始位置,0(删除项数设为0),要插入的值

    //用来插入
    var arr1 = [1,2,3,4,5,6];
    arr1.splice(3,0,100);//从位置3插入一个100值
    console.log(arr1);  //[1,2,3,100,4,5,6];

    替换:指定3个参数,起始位置,要删除的项,插入的值

    //替换
    var arr2 = [1,2,3,4,5];
    //我要替换3,替换成100
    arr2.splice(2,1,100);  //起始位是2,删除1项(就是3了),载插入100,ok
    console.log(arr2); //[1,2,100,4,5]

    9.位置函数:indexOf()和lastIndexOf():这两个方法用来找数值下标位置。都接受两个参数,第一个是要找的值,第二个是开始位置

    //indexOf() 只传一个参数时默认从0开始找数值,找到返回这个数的数组位置,没有返回-1
    var arr = [100,12,123,1234];
    console.log(arr.indexOf(123));  //2  数组的位置2
    
    //lastIndexOf()  和indexOf查找顺序正好相反,它从数组末尾开始找起
    console.log(arr.lastIndexOf(100));  //0

    10.forEach()方法,对每一项进行处理

    //接受一个函数,函数传入2个参数表示当前数值和其下标位置
    var arr = [1,2,3,4,5];
    arr.forEach(function(item, index){
        console.log(item + 1);
    }
    
    //输出 2,3,4,5,6  每一项都加1了

    转http://www.cnblogs.com/Ry-yuan/p/7688322.html 感谢原作者

  • 相关阅读:
    @SuppressWarnings("rawtypes") 是什么含义
    Oracle存在则更新,不存在则插入应用-merge
    word 2010中设置默认粘贴为 只保留文本粘贴【visio也适用于快捷键方式】
    List的remove()方法的三种正确打开方式
    纵表和横表的概念及其相互转换
    log4j.xml简单配置实现在控制台打印sql执行语句【加注释】
    NGUI例子Scroll View场景中item添加点击后自动滑到终点
    unity3d 日志捕捉
    Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景
    Unity3D研究之Prefab里面的Prefab关联问题
  • 原文地址:https://www.cnblogs.com/junwu/p/7737278.html
Copyright © 2011-2022 走看看