zoukankan      html  css  js  c++  java
  • js,jQuery数组常用操作小结

    一、js中数组常用操作小结

    (1) shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined

    var a = [1,2,3,4,5];
    var b = a.shift();
    结果 a:[2,3,4,5] b:1

    (2) unshift:将参数添加到原数组开头,并返回数组的长度

    var a = [1,2,3,4,5];
    var b = a.unshift(-2,-1);
    结果 a:[-2,-1,1,2,3,4,5] b:7

    注:在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法的返回值不可靠,需要用返回值时可用splice代替本方法来使用。

    (3) pop:删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined

    var a = [1,2,3,4,5];
    var b = a.pop();
    结果 a:[1,2,3,4] b:5

    (4) push:将参数添加到原数组末尾,并返回数组的长度

    var a = [1,2,3,4,5];
    var b = a.push(6,7);
    结果a:[1,2,3,4,5,6,7] b:7

    (5) concat:返回一个新数组,是将参数添加到原数组中构成的

    var a = [1,2,3,4,5];
    var b = a.concat(6,7);
    结果 a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]

    (6) splice(start,deleteCount,val1,val2,...):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,...

    var a = [1,2,3,4,5];
    var b = a.splice(2,2,7,8,9);
    结果 a:[1,2,7,8,9,5] b:[3,4]

    (7) reverse:将数组反序

    var a = [1,2,3,4,5];
    var b = a.reverse();
    结果 a:[5,4,3,2,1] b:[5,4,3,2,1]

    (8) sort(orderfunction):按指定的参数对数组进行排序

    var a = [1,2,3,4,5,32];
    var b = a.sort();
    结果 a:[1,2,3,4,5] b:[1,2,3,32,4,5]

    注:a.sort()排序不是按数字大小排序,如果要实现按数字大小排序,要加个方法

    function sortNumber(a,b){
    return a-b;
    }
    a.sort(sortNumber);

    (9) slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组

    var a = [1,2,3,4,5];
    var b = a.slice(2,5);
    结果 a:[1,2,3,4,5] b:[3,4,5]

    (10) join(separator):将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符

    var a = [1,2,3,4,5];
    var b = a.join("|");
    结果 a:[1,2,3,4,5] b:"1|2|3|4|5"

    二、jQuery中数组操作小结

          JQuery对数组的处理非常便捷并且功能强大齐全,一步到位的封装了很多原生js数组不能企及的功能。下面来看看JQuery数组的强大之处在哪。

    (1)$.each(array, [callback]) 遍历

          不同于例遍 jQuery 对象的 $.each() 方法,此方法可用于例遍任何对象(不仅仅是数组哦~)。 回调函数拥有两个参数:第一个为对象的成员或数组的索引, 第二个为对应变量或内容。 如果需要退出 each 循环可使回调函数返回 false,其它返回值将被忽略。

    使用方法如下:

    var arr = ['javascript', 'php', 'java', 'c++', 'c#', 'perl', 'vb', 'html', 
    'css', 'objective-c'];
    $.each(arr, function(key, val) {
    console.log('index in arr:' + key + ", corresponding value:" + val);
    // 如果想退出循环
    // return false;
    });

    (2)$.grep(array, callback, [invert])过滤

          使用过滤函数过滤数组元素,此函数至少传递两个参数(第三个参数为true或false,对过滤函数返回值取反): 待过滤数组和过滤函数。过滤函数必须返回 true 以保留元素或 false 以删除元素。

    var temp = [];
    
    temp = $.grep(arr, function(val, key) {
    
    if(val.indexOf('c') != -1)
    
    return true;
    
    // 如果[invert]参数不给或为false, $.grep只收集回调函数返回true的数组元素
    
    // 反之[invert]参数为true, $.grep收集回调函数返回false的数组元素
    
    }, false);
    
    console.dir(temp);

    (3)$.map(array,[callback])按给定条件转换数组

          作为参数的转换函数会为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。 转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组, 并扩展至原始数组中。这个是个很强大的方法。它可以根据特定条件,更新数组元素值,或根据原值扩展一个新的副本元素。

    //1.6之前的版本只支持数组
    
    temp = $.map(arr, function(val, key) {
    
    //返回null,返回的数组长度减1
    
    if(val === 'vb') return null;
    
    return val;
    
    });
    
    console.dir(temp);
    
    //1.6开始支持json格式的object
    
    var obj = {key1: 'val1', key2: 'val2', key3: 'val3'};
    
    temp = $.map(obj, function(val, key) {
    
    return val;
    
    });
    
    console.dir(temp);

    (4)$.inArray(val,array)判断值是否存在于数组中

          确定第一个参数在数组中的位置, 从0开始计数(如果没有找到则返回 -1 )。记得indexOf()方法了吗? indexOf()返回字符串的首次出现位置,而$.inArray()返回的是传入参数在数组中的位置,同样的,如果找到的,返回的是一个大于或等于0的值,若未找到则返回-1.现在, 知道怎么用了吧。有了它,判断某个值是否存在于数组中,就变得轻而易举了。

    //返回元素在数组中的位置,0为起始位置,返回-1则未找到该元素
    
    console.log($.inArray('苹果', arr));

    (5)$.merge(first,second)合并两个数组

           返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素。 这个方法是用jQuery的方法替代原生concat()方法, 但功能并没有concat()强大, concat()可以同时合并多个数组。

    var frontEnd = ['javascript', 'css', 'html'],
    
    backEnd = ['java', 'php', 'c++'];
    
    // 这种方式会修改第一个参数, 即frontEnd数组
    
    temp = $.merge(frontEnd, backEnd);
    
    console.dir(temp);
    
    console.dir(frontEnd);
    
    // 可以用下面的方式来避免对原数组的影响
    
    // $.merge($.merge([], frontEnd), backEnd);

    (6)$.unique(array)过滤数组中重复元素

    删除数组中重复元。只处理删除DOM元素数组,而不能处理字符串或者数字数组。

    <div>blahblahblah....</div>
    
    <div></div>
    
    <div class="dup"></div>
    
    <div class="dup"></div>
    
    <div class="dup"></div>
    
    <div></div>
    
    // $.unique只支持DOM元素数组,去除重复DOM元素,不支持其他类型数组(String或者Number)
    
    // 获得原始的DOM数组,而不是jQuery封装的
    
    var divs = $('div').get();
    
    // 增加几个class为dup的div
    
    divs = divs.concat($('div.dup').get());
    
    console.log("before unique:" + divs.length);
    
    divs = $.unique(divs);
    
    console.log("after unique:" + divs.length);
  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    基于分布式锁解决定时任务重复问题
    基于Redis的Setnx实现分布式锁
    基于数据库悲观锁的分布式锁
    使用锁解决电商中的超卖
  • 原文地址:https://www.cnblogs.com/chaozhang/p/4664285.html
Copyright © 2011-2022 走看看