• js对数组的常用操作


    在js中对数组的操作是经常遇到的,我呢在这就列一下经常用到的方法

    删除数组中的元素:

    1.delete方法:delete删除的只是数组元素的值,所占的空间是并没有删除的

    代码:

    var arr=[12,23,44,5,6,23,43,34];
    console.log(arr.length);
    console.log(arr);
    delete arr[1];
    console.log(arr);
    console.log(arr[1]);
    console.log(arr.length);

    运行结果在这里:

    这个就很直观的看得出来,删除后,数组的长度前后是并没有变化的。被删除的元素位置还是留在那,读取到该下标元素的时候,元素的值为undefined。

    2.splice方法:该方法删除数组指定的元素,并且可以给数组添加新的元素,即实现删除/替换数组的某项元素。splice(下标,删除的长度,替换的新元素)

    arr.splice(index,length,items,items,...);

    注意:如果不添加item的时候,就是数组的删除,会改变原数组的长度

    代码如下:

    var arr=[12,23,44,5,6,23,43,34];
        console.log(arr.length);
        arr.splice(1,2);//从下标为1的元素开始删除,删除的长度为2即23,44两个数
        console.log(arr);
        console.log(arr.length);

    运行后的结果:

    从运行结果中可以看得出来,原数组中的23,44两个元素被删除了,数组长度由原来的8变成了6

    shift方法:删除第一个数组元素,不带参数,数组的长度会减1,并且返回的是数组的第一个元素

      arr.shift();

      注意:如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject

    pop方法:删除数组的最后一个元素,数组的长度会减1,并且返回的是数组的最后一个元素(通过alert()可以查看出返回的是哪个值)

     arr.pop();

    var arr=['a','b','c','d','e','f'];
                alert(arr.shift());
                arr.pop();
                alert(arr.pop());
                console.log(arr);

    增加数组:

     /*****检测方法都是和上面的类似的,下面这些我就罗列测试结果截图了*****/

    unshift(): 方法:在数组的第一个元素前面增加一个元素,数组的长度会加1,该方法会改变原来数组的长度.

    arr.unshift(newElement)

    push():在数组的结尾追加元素,可以追加多个元素,该方法会改变原来数组的长度 

      arr.push(newElement,...);

    注意:追加的元素最好是简单类型的字面量,不要是数组,如果是数组的,追加过来的元素会在该位置显示为一个数组,元素就会变成了二维数组,甚至多维数组

    concat():合并两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本

    数组排序:

    sort():该方法是对数组进行升序排序,规则是按ascii表的规则来的

      arr.sort();

    reverse():对数组进行翻转操作

      arr.reverse();

      js模拟原理实现的代码:

    var arr = ["诸葛亮","安琪拉","狄仁杰","后羿","荆轲","娜可露露","鲁班"];
    //思路:实现方法:1.操作原数组,让原数组第一位和最后一个位调换位置,以此类推。
        for(var i=0;i<arr.length/2;i++){
            //让前后数组中的元素交换位置。
            var temp = arr[i];
            //前面项和对应的后面项交换位置。(arr.length-1-i = 倒数第i+1项)
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = temp;
        }
        console.log(arr);

    检测是否为数组:

     arr.isArray(obj):该方法适用于确定传递的值是否为Array,是Array返回的则是true,否的话返回的是false

    Array.isArray([1, 2, 3]);  // true
    Array.isArray({foo: 123}); // false
    Array.isArray("foobar");   // false
    Array.isArray(undefined);  // false

    intanceof 同样也是检测使用的  

      语法:a instanceof Object  

      返回的值是true or false;

    其他方法:

    slice():从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始(从第一个元素开始)

      arr.slice(star,end);

    注意:如果slice里面没有定义结束的位置的话,那么截取的元素就从被截取元素的开始位置一直截取到结束位置

    arr.join():把数组转换成为字符串,可以自己定义分隔符 arr.join("自定义分隔符如&"),默认是逗号隔开,如果要没有分隔符的话,就arr.join("");

    arr.toString():同样是把数组转成字符串,但是返回的字符串每项都是用逗号隔开的

  • 相关阅读:
    ajax 异步问题
    mysql update 报 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode
    JSON string 和 object 转换
    Mybatis insert 返回主键
    switch case 的值
    $(this).attr("checked") 用jquery取checkbox的值 返回undefined
    7天入门JavaScript,第五天
    7天入门JavaScript,第四天
    7天入门JavaScript,第三天
    保持按钮的高亮状态
  • 原文地址:https://www.cnblogs.com/cythia/p/6557308.html
Copyright © 2020-2023  润新知