数组

作者: 小周师傅 | 来源:发表于2016-08-22 12:10 被阅读0次

    一.数组方法里push、pop、shift、unshift、join、split分别是什么作用?

    1.push
    push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度

    var arr = new Array(3)
    arr[0] = "today"
    arr[1] = "is"
    arr[2] = "sunday"
    document.write(arr+"<br/>")
    document.write(arr.push("ok")+"<br/>")
    document.write(arr)
    
    //运行结果
    today,is,sunday
    4
    today,is,sunday,ok
    

    2.pop
    pop()方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项

    var arr = new Array(3)
    arr[0] = "today"
    arr[1] = "is"
    arr[2] = "sunday"
    document.write(arr+"<br/>")
    document.write(arr.pop()+"<br/>")
    document.write(arr+"<br/>")
    
    
    //运行结果
    today,is,sunday
    sunday
    today,is
    

    3.shift
    shift()方法移除数组中的第一个项并返回该项,同时将数组长度减1

    var arr = new Array(3)
    arr[0] = "today"
    arr[1] = "is"
    arr[2] = "sunday"
    document.write(arr+"<br/>")
    document.write(arr.shift()+"<br/>")
    document.write(arr+"<br/>")
    
    //运行结果
    today,is,sunday
    today
    is,sunday
    

    4.unshift
    unshift()方法在数组前端添加任意个项并返回新数组的长度

    var arr = new Array(3)
    arr[0] = "today"
    arr[1] = "is"
    arr[2] = "sunday"
    document.write(arr+"<br/>")
    document.write(arr.unshift("ok")+"<br/>")
    document.write(arr+"<br/>")
    
    //运行结果
    today,is,sunday
    4
    ok,today,is,sunday
    

    5.join
    jion()方法用于把数组中的所有元素放入一个字符串,元素通过指定的分隔符进行分隔,返回得到的新的字符串

    var arr = [1,22,3,46,5];
    document.write(arr.join("")+"<br/>");
    document.write(arr.join(" ")+"<br/>");
    document.write(arr.join("||")+"<br/>");
    
    //运行结果
    1223465
    1 22 3 46 5
    1||22||3||46||5
    

    6.split
    split()方法用于把一个字符串分割成字符串数组,该方法返回分割后新的字符串数组

    <script>
    var str = "today is sunday"
    document.write(str.split(" ")+"<br/>")
    document.write(str.split("")+"<br/>")
    document.write(str.split(" ",3))
    </script>
    
    //运行结果
    today,is,sunday
    t,o,d,a,y, ,i,s, ,s,u,n,d,a,y
    today,is,sunday 
    

    代码

    数组

      // 用 splice 实现 push
            var myArray = new Array(1, 2, 3, 4, 5, 6);
            function push(arr, val) {
                arr.splice(arr.length, 0, val);
                return arr.length;
            }
            push(myArray, 3);
      // 用 splice 实现pop
            var myArray = new Array(1, 2, 3, 4, 5, 6);
            function pop(arr) {
                var val = arr.splice(arr.length - 1, 1);
                return val;
            }
            pop(myArray);
      // 用 splice 实现shift
            var myArray = new Array(1, 2, 3, 4, 5, 6);
            function shift(arr) {
                var val = arr.splice(0, 1);
                return val;
            }
            shift(myArray);
      // 用 splice 实现unshift方法
            var myArray = new Array(1, 2, 3, 4, 5, 6);
            function unshift(arr, val) {
                arr.splice(0, 0, val);
                return arr.length;
            }
            unshift(myArray, 3);
    
      //使用数组拼接出如下字符串 (***)
            var prod = {
                name: '女装',
                styles: ['短款', '冬季', '春装']
            };
    
            function getTpl(data) {
                var myarr = new Array();
                myarr[0] = '<dl class="product">';
                myarr[1] = "<dt>" + data.name + "<dt>";
                for (var i = 0; i < data.styles.length; i++) {
                    myarr[i + 2] = '<dd>' + data.styles[i] + '</dd>';
                };
                myarr[myarr.length] = '</dl>';
                return myarr.join("\n");
            };
            var result = getTpl(prod);
            console.log(result);
    
      //写一个find函数,实现下面的功能 (***)
    
            var arr = ["test", 2, 1.5, false]
            find(arr, "test") // 0
            find(arr, 2) // 1
            find(arr, 0) // -1
            function find(arr, val) {
                var result = -1;
                for (var i = 0; i < arr.length; i++) {
                    if (val === arr[i]) {
                        result = i;
                    }
                }
                return result;
            }
    
        //写一个函数filterNumeric,把数组 arr 中的数字过滤出来赋值给新数组newarr, 原数组arr不变 (****)
            function filterNumeric(arr) {
                var newarr = [];
                for (var i = 0, j = 0; i < arr.length; i++) {
                    if (typeof arr[i] === 'number') {
                        newarr[j] = arr[i];
                        j++;
                    }
                }
                return newarr;
            }
            arr = ["a", "b", 1, 3, 5, "b", 2];
            newarr = filterNumeric(arr); //   [1,3,5,2]
            console.log(newarr);
    
    //对象obj有个className属性,里面的值为的是空格分割的字符串(和html元素的class特性类似),写addClass、removeClass函数,有如下功能:(****)
      var obj = {
                className: 'open menu'
            }
            function addClass(obj, val) {
                var myarr = obj.className.split(' ');
                for (var i = 0; i < myarr.length; i++) {
                    if (val === myarr[i]) {
                        return;
                    }
                }
                return obj.className += ' ' + val;
            }
    
            function removeClass(obj, val) {
                var myarr = obj.className.split(' ');
                for (var i = 0; i < myarr.length; i++) {
                    if (val === myarr[i]) {
                        myarr.splice(myarr[i], 1);
                        return myarr.join(' ');
                    }
                }
            }
            console.log(addClass(obj, 'new'));
            console.log(addClass(obj, 'open'));
            console.log(addClass(obj, 'me'));
            console.log(obj.className);
            console.log(removeClass(obj, 'open'));
            console.log(removeClass(obj, 'blabla'));
    
    //写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如 (***)
    function camelize(str) {
                var myarr = str.split('');
                for (var i = 0; i < myarr.length; i++) {
                    if (myarr[i] === '-') {
                        myarr[i + 1].toUpperCase();
                        myarr.splice(i, 1);
                        i--;
                    }
                }
                return myarr.join('');
            }
            console.log(camelize("background-color"));
            console.log(camelize("list-style-image"));
    
            //如下代码输出什么?为什么? (***)
           //网页弹出窗口显示undefined,控制台打印出hello hunger valley
            arr = ["a", "b"];//定义一个数组
            arr.push(function() {
                alert(console.log('hello hunger valley'))
            });//在数组末端添加函数
            arr[arr.length - 1]() /*显示数组最后一个元素,即function() {
                alert(console.log('hello hunger valley')),并执行*/
            })
    
      //写一个函数filterNumericInPlace,过滤数组中的数字,删除非数字。要求在原数组上操作 (****)
            function filterNumericInPlace(arr) {
                for (var i = 0; i < arr.length; i++) {
                    if (typeof arr[i] !== 'number') {
                        arr.splice(i, 1);
                        i--;
                    }
                }
            }
            arr = ["a", "b", 1, 3, 4, 5, "b", 2];
            filterNumericInPlace(arr);
            console.log(arr) // [1,3,4,5,2]
    
      //写一个ageSort函数实现数组中对象按age从小到大排序 (***)
            var john = {
                name: "John Smith",
                age: 23
            }
            var mary = {
                name: "Mary Key",
                age: 18
            }
            var bob = {
                name: "Bob-small",
                age: 6
            }
            var people = [john, mary, bob]
            ageSort(people); // [ bob, mary, john ]
            console.log(people)
    
            function ageSort(myarr) {
                myarr.sort(function sortNum(a, b) {
                    return  a.age - b.age ;
                })
            }
    
      //写一个filter(arr, func) 函数用于过滤数组,接受两个参数,第一个是要处理的数组,第二个参数是回调函数(回调函数遍历接受每一个数组元素,当函数返回true时保留该元素,否则删除该元素)。实现如下功能: (****)
            arr = ["a", 3, 4, true, -1, 2, "b"]
    
            function isNumeric(el) {
                return typeof el === 'number';
            }
    
            arr = filter(arr, isNumeric); // arr = [3,4,-1, 2],  过滤出数字
    
            arr = filter(arr, function(val) {
                return typeof val === "number" && val > 0
            }); // arr = [3,4,2] 过滤出大于0的整数
            function filter(arr, func) {
                for (var i = arr.length - 1; i >= 0; i--) {
                    if (!func(arr[i])) { //abc(arr[i])  // true fasle
                        arr.splice(i, 1);
                    }
                }
                return arr;
            }
    

    字符串

    //写一个 ucFirst函数,返回第一个字母为大写的字符 (***)
         function ucFirst(str){
          return str[0].toUpperCase() + str.substr(1);
         }
    
    //写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如 (****)
            function truncate(str, maxlength) {
                if (str.length > maxlength) {
                    return str.substr(0, maxlength) + "...";
                } else {
                    return str;
                }
            }
            console.log(truncate("hello, this is hunger valley,", 10));
            console.log(truncate("hello world", 20)) ;
    

    数学函数

      //写一个函数,获取从min到max之间的随机整数,包括min不包括max (***)
            function getRand1(min, max) {
                return min + Math.floor(Math.random() * (max - min));
            }
            for (var i = 0; i < 10; i++) {
                console.log(getRand1(12, 22));
            }
            //写一个函数,获取从min都max之间的随机整数,包括min包括max
            function getRand2(min, max) {
                return min + Math.floor(Math.random() * (max - min + 1));
            }
            for (var i = 0; i < 10; i++) {
                console.log(getRand2(14, 28));
            }
            //获取一个随机数组,数组中元素为长度为len,最小值为min,最大值为max(包括)的随机数
            function getRand3(len, min, max) {
                var arr = [];
                for (var i = 0; i < len; i++) {
                    arr[i] = min + Math.floor(Math.random() * (max - min + 1));
                }
                return arr;
            }
            console.log(getRand3(4, 8, 16));
            //写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z
            function getRand4(len) {
                var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
                    myStr = '';
                for (var i = 0; i < len; i++) {
                    myStr += str[Math.floor(Math.random() * str.length)];
                  
                }
                return myStr;
            }
            var str = getRand4(10);
            console.log(str);
    

    相关文章

      网友评论

          本文标题:数组

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