zoukankan      html  css  js  c++  java
  • JavaScript--数组方法使用

    学习完数组的声明、赋值、类型判断,我们开始了解一下数组都有什么方法,但是为了知道这些方法有什么用,我还会举例进行操作。

    一、数组转化为字符串(不会改变原数组的值)

    1、toString()方法:可以使我们将数组转为每项以逗号隔开的字符串;

    var hhh = [1, 2, 3];
    /*转换方法*/
    console.log(hhh.toString()); //1,2,3

    2、join()方法:可以自己指定字符串的形式,如果我们传入的是“*”,那么最终的字符串形式就是以*隔开的字符串;

    var hhh = [1, 2, 3];
    /*转换方法*/
    console.log(hhh.join('/')); //1/2/3

    二、像栈一样操作数组 栈里面的数据特点是后进先出 所以最先收到影响的就是数组尾部--因为它们是后来才进来的(栈方法都会改变原数组的值)

    1、push()方法:从数组末尾添加一些项 返回值是操作后的数组长度;

    var hhh = [1, 2, 3];
    //接受任意数量的项,并将项添加至数据末尾,最后返回数组最终长度
    var rtnvalue = hhh.push('haha', 'heihei');
    console.log(hhh);//[ 1, 2, 3, 'haha', 'heihei' ]
    console.log(rtnvalue);//5

    2、pop()方法:从数组尾部移除一些项 返回值是被移除的那个项的值;

    var hhh = [1, 2, 3];
    //从末尾移除 并返回了被移除项的值
    var removerfromend = hhh.pop();
    console.log(removerfromend);//3
    console.log(hhh);//[ 1, 2]

    三、像队列一样操作数组 队列是先进先出 所以最先收到影响的是数组开头的那些值 因为他们是先进来的(队列方法都会改变原数组的值)

    1、shift()方法:从数组首部移除一些项;

    var hhh = [1, 2, 3];
    //从顶部移除
    var ite = hhh.shift();
    console.log(ite); //返回被移除的那一项 1
    console.log(hhh);//[ 2, 3 ]

    2、unshift()方法:从数组首部推入一些项;

    var hhh = [1, 2, 3];
    //从顶部添加
    var rtn = hhh.unshift('hua', 'long');
    console.log(rtn); //返回从顶部添加后的数组长度 5
    console.log(hhh);//[ 'hua', 'long', 1, 2, 3 ]

    四、数组排序(排序方法都会改变原数组的值)

    1、sort()方法:将数组按照升序排列,并返回排序后的数组。这个方法会改变原始数组的值;

    var arr = [3, 2, 6, 9, 0, 4, 5, 2, 7, 8, 8, 12];
    arr.sort(); //默认升序
    console.log(arr);//[  0, 12, 2, 2, 3,  4,  5, 6, 7, 8,  8,  9]

    2、自定比较函数,作为参数传入sort()方法中。比如我们想让数组不是默认的升序排序,而是变为降序排序;

    var arr = [3, 2, 6, 9, 0, 4, 5, 2, 7, 8, 8, 12];
    //自定义比较方法 改变sort排序规则
    function comp(v1, v2) {
        if (v1 > v2) {
            return -1;
        } else if (v1 < v2) {
            return 1;
        } else {
            return 0;
        }
    }
    arr.sort(comp);
    console.log(arr);//[ 12, 9, 8, 8, 7, 6, 5, 4, 3, 2, 2, 0]

    3、reverse()方法:将数组顺序颠倒;

    var arr = [3, 2, 6, 9, 0, 4, 5, 2, 7, 8, 8, 12];
    arr.reverse(); //顺序反转
    console.log(arr);//[ 12, 8, 8, 7, 2, 5, 4, 0, 9, 6, 2, 3]

    五、数组操作(数组操作方法中只有splice方法会改变原数组的值)

    1、concat()方法:在末尾连接一些数组,原始数组不变,该方法返回另外一个新数组;

    var arr = [3, 2, 6, 9, 0, 4, 5, 2, 7, 8, 8, 12];
    /*操作方法*/
    var newarr = arr.concat('我的'); //向数组后面连接多个数组
    console.log(arr);//[ 3,  2, 6, 9, 0, 4,  5, 2, 7, 8, 8, 12]
    console.log(newarr);//[ 3, 2,  6,  9, 0, 4, 5,  2,  7, 8,  8, 12, '我的']

    2、slice()方法:使用起始值和结束值,按照从开始下标开始(包含起始位置)到结束值(不包含结束位置)返回另外一个新的数组;

    var arr = [3, 2, 6, 9, 0, 4, 5, 2, 7, 8, 8, 12];
    var selectorarr = arr.slice(2, 4); //包含开始位置 而不包含结束位置
    console.log(selectorarr); //所以只会有两项 2 3 而不包含4 :[ 6, 9 ]
    console.log(arr)//[3,2,6,9,0,4,5,2,7,8,8,12]
    var arr = [3, 2, 6, 9, 0, 4, 5, 2, 7, 8, 8, 12];
    var selectorarr1 = arr.slice(2);
    console.log(selectorarr1);//[ 6, 9, 0, 4,  5, 2, 7, 8, 8, 12]

    3、splice()方法:该方法有三个参数,分别是起始位置、要移除的项、新的要从该位置插入的项;我们可以通过调整这三个参数,来达到不同的效果;

    //splice方法 增、删、改
    var myarr = [1, 2, 3, 4, 5, 6];
    var res = myarr.splice(2, 3, '掺入一个', '又插入一个'); //从位下标二处删除3项(3 4 5) 又新插入两项
    console.log(res);//谁被删除了:[ 3, 4, 5 ]
    console.log(myarr);//[ 1, 2, '掺入一个', '又插入一个', 6 ]
    var myarr2 = [1, 2, 3, 4, 5, 6];
    var res2 = myarr2.splice(2, 0, '插入一个', '再插入一个'); //从位置二处删除0项 又插入两项
    console.log(res2); //没有项被删除 返回空数组 
    console.log(myarr2); //返回被操作后的数组 [ 1, 2, '插入一个', '再插入一个', 3, 4, 5, 6 ]
    //第二个参数为n,则插入n个新值可以实现数组替换
    var readyarr = [1, 2, 3, 4];
    var rmv = readyarr.splice(2, 1, 'baba');
    console.log(rmv);//[ 3 ]
    console.log(readyarr);//[ 1, 2, 'baba', 4 ]

    六、搜索某项在数组中的位置(返回值为number类型,操作都不改变原数组的值)

    1、indexof()方法:从左到右搜做。该方法有两个参数,第一个是待搜索的值,第二个是起始位置;默认情况下起始位置是从0(即数组开头)开始搜索;

    /*位置方法*/
    var operatearr = [1, 3, 2, 7, 8, 2];
    var index = operatearr.indexOf(3); //寻找3在哪儿 默认从下标零开始找
    console.log(index); //返回下标1
    console.log(operatearr.indexOf(3, 0)); //从下标零开始 找3在哪儿 返回1
    console.log(operatearr.indexOf(3, 2)); //从下标2开始找 最后没找到返回-1

    2、lastindexof()方法:从右到左搜索。该方法也有两个参数,第一个是待搜索的值,第二个是起始位置;默认情况下起始位置是从数组末尾开始搜索;

    /*位置方法*/
    var operatearr = [1, 3, 2, 7, 8, 2];
    console.log(operatearr.lastIndexOf(2)); //从后往前找2在哪个位置 默认从最后一个下标开始找 返回5
    console.log(operatearr.lastIndexOf(2, operatearr.length - 1));//返回 5

    七、数组的迭代方法(迭代方法都不会改变原数组的值)

    1、every()方法:该方法最终返回一个布尔值。该方法会对数组中每项都运行给定函数,该函数每一项都返回true 才会返回true;

    var useoperate = [1, 2, 3, 4, 5, 6, 7];
    // 使用every方法 对数组中每项都运行给定函数 该函数每一项都返回true 才会返回true
    // 比如;判断某个数组都大于2么(使用every迭代 必须是每一项都比二大才会返回true)
    var results = useoperate.every(function(itm, idx, arrs) {
        return (itm > 2);
    });
    console.log(results);//false

    2、some()方法:该方法最终返回的也是布尔值。该方法会对数组中的每项都运行给定函数,该函数只要其中一项返回true 整个some函数的返回值就为true;

    var useoperate = [1, 2, 3, 4, 5, 6, 7];
    //使用some 对数组中的每项都运行给定函数 该函数只要其中一项返回true 整个some函数的返回值就为true
    var results2 = useoperate.some(function(itm, idx, arrs) {
        return (itm > 2);
    });
    console.log(results2);//true

    3、filter()方法:该方法返回另外一个新数组。该方法会对数组每项都运行给定函数,最后返回函数返回值为true的项组成的数组;

    var useoperate = [1, 2, 3, 4, 5, 6, 7];
    ///使用fiter方法 数组每项都运行给定函数 最后返回函数返回值为true的项组成的数组
    var results3 = useoperate.filter(function(itm) {
        return (itm > 2);
    });
    console.log(results3);//[ 3, 4, 5, 6, 7 ]
    console.log(useoperate);//[ 1, 2, 3, 4, 5, 6, 7]

    4、map()方法:map方法会对数组中的每一项都运行给定函数,操作完成后map方法会将改变后的数组返回;

    var useoperate = [1, 2, 3, 4, 5, 6, 7];
    //使用map方法 将数组中的每项都运行给定函数 最后返回被函数操作后的数组
    //比如使用map方法可以使数组每项放大十倍
    var results4 = useoperate.map(function(item) {
        return item * 10;
    });
    console.log(results4);//[ 10, 20, 30, 40, 50, 60, 70]
    console.log(useoperate);//[1, 2, 3, 4, 5, 6, 7]

    5、foreach()方法:该方法会对数组中的每一项都运行给定函数,它的本质与for()没有区别,该方法没有返回值;

    var useoperate = [1, 2, 3, 4, 5, 6, 7];
    //使用foreach方法 仅仅是对数组的每一项运行给定函数 本质与for差不读 没有返回值
    useoperate.forEach(function(t) {
        console.log('当前项:' + t);
    });
    执行结果:
    当前项:1
    当前项:2
    当前项:3
    当前项:4
    当前项:5
    当前项:6
    当前项:7
  • 相关阅读:
    图像处理基础2
    c++之morphologyEx(形态学操作)
    图像处理基础
    Mac 安装QT
    Qmake VS Cmake
    g++,qmake,cmake区别
    C++11中的匿名函数(lambda函数,lambda表达式)
    c++相关要点
    spritekit基础节点学习
    spriteKit简单学习
  • 原文地址:https://www.cnblogs.com/bigbosscyb/p/12170725.html
Copyright © 2011-2022 走看看