遍历数组及数组的方法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // //数组练习

        // function Person(name, age) {
        //     this.name = name;
        //     this.age = age;
        // }
        // //修改Person原型的toString
        // Person.prototype.toString = function() {
        //     return "Person[name=" + this.name + ",age=" + this.age + "]";
        // };
        // //创建一个Person对象
        // var per = new Person("孙悟空", 18);
        // var per2 = new Person("zhubajie", 28);
        // var per3 = new Person("baigujing", 48);
        // var per4 = new Person("erlangshen", 58);
        // var per5 = new Person("dadi", 88);
        // //将这些person对象放入到一个数组中
        // var perArr = [per, per2, per3, per4, per5];
        // //创建一个函数,可以将perArr中的满18岁的Person提取出来
        // //然后封装到一个新的数组中返回
        // //arr
        // //形参,要提取信息的数组
        // function getAdult(arr) {
        //     //创建一个新的数组
        //     var newArr = [];
        //     // 遍历arr 获取arr中person对象
        //     for (var i = 0; i < arr.length; i++) {
        //         var p = arr[i];
        //         //判断Person对象age是否大于28
        //         if (p.age >= 30) {
        //             //大于28 添加到newArr中
        //             newArr.push(p);
        //         }

        //     }
        //     //将新数组返回
        //     return newArr;

        // }
        // var result = getAdult(perArr);
        // console.log(result);

        // //数组方法 forEach()
        // //一般我们用for循环遍历数组  js中提供一个方法,用于遍历数组
        // //这个方法只支持IE8以上的浏览器
        // //创建一个数组
        // var arr = ["asd", "qwe", "zxc"];
        // //forEach()方法需要一个函数作为参数
        // // --由自己创建,自己不调用,我们称之为回调函数,由浏览器调用
        // // --数组中有几个元素,函数就会执行几次 每次执行时 浏览器会将遍历的元素
        // //     以实参的形式传递进来 我们可以定义形参来读取这些内容
        // // - 浏览器会在回调函数中传递三个参数
        // //     - 第一个参数 就是当前正在遍历的参数
        // //     - 第二个参数 就是当前正在遍历元素的索引
        // //     - 第三个参数 就是正在遍历的数组
        // arr.forEach(function(value, index, obj) {
        //     console.log(value);
        //     console.log(index);
        //     console.log(obj);
        // });

        // //数组方法:slice(start, [end])
        // // -- 用于从数组中提取元素
        // // -- 给方法不会改变元素数组 而是将截取的元素封装到新的数组中返回
        // // --参数:
        // //      - 1 截取开始位置索引 包含开始索引
        // //      - 2 截取结束位置索引 不好含结束索引
        // //      - 第二个参数可以不写,此时从开始索引开始直到全部结束

        // //创建数组
        // var arr = ["asd", "qwe", "zxc", "iop"];
        // var result = arr.slice(0, 2);
        // console.log(result);
        // result = arr.slice(1);
        // console.log(result);
        // //参数为负数,表示从数组索引号倒数
        // result = arr.slice(1, -1);
        // //"qwe", "zxc"
        // console.log(result);

        // //数组方法: splice(start,num,"string");
        // // -- 删除数组中的指定元素
        // // -- 会将指定元素在原数组中删除,并返回删除后的新数组
        // //    - 参数:
        // //      -- 第一个:表示开始位置的索引
        // //      -- 第二个:表示删除的数量
        // //      -- 第三个及以后:传递一些新的元素,这些元素将会自动插入到开始位置索引前面

        // // arr.splice(0, 2);
        // // result = arr.splice(0, 2);
        // //"zxc", "iop"  剩余的元素
        // // console.log(arr);
        // //"asd", "qwe"  删除的元素
        // // console.log(result);

        // //一个都不删
        // // result = arr.splice(1, 0);
        // //返回[]
        // // console.log(result);
        // result = arr.splice(0, 1, "cvb", "ppp", "ggg");
        // console.log(arr);

        // //数组去重
        // //创建一个元素重复数组
        // var arr = [1, 2, 3, 2, 2, 1, 3, 4, 2, 5];
        // //获取数组每一个元素
        // for (var i = 0; i < arr.length; i++) {
        //     console.log(arr[i]);
        //     //获取当前元素后面的元素
        //     for (var j = i + 1; j < arr.length; j++) {
        //         console.log("-------" + arr[j]);
        //         //判断两个值是否相等
        //         if (arr[i] == arr[j]) {
        //             //true 则出现相同的元素,删除j
        //             arr.splice(j, 1);
        //             //当删除了j所在元素以后,后面元素会自动补位,此时
        //             //将不会比较这个元素,需要再比较一次这个j所在位置的元素
        //             //取j自减 当删除一个元素后,j--
        //             j--;

        //         }
        //     }
        // }
        //return 非重复的数组
        // console.log(arr);

        //数组其他方法
        // -- concat(arr)
        // 拼接两个数组,并将新的数组返回
        //该方法对原数组产生影响
        // var arr = [22, 33, 44];
        // var arr1 = [55, 66, 77];
        // var arr2 = [88, 99, 100];
        // var result = arr.concat(arr1, 123, 234, 432);
        // console.log(result);

        // -- join()
        //   - 该方法可以将一个数组转换成字符串 不会对原数组产生影响
        //   - 将转换后的字符串作为结果返回
        //   - 在join()中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符
        // var result = arr.join("&");
        // //return Object
        // console.log(typeof arr);
        // //返回22&33&44
        // console.log(result);
        // //返回string
        // console.log(typeof result);


        //reverse()
        // -- 该方法用来反转数组
        //    - 会直接修改原数组
        // arr.reverse();
        // console.log(arr);

        //sort()
        // -- 对数组进行排序
        // -- 影响原数组,默认按照Unicode编码进行排序
        // -- 即使使用纯数字的数组,使用sort()排序时,也会按照Unicode编码排序
        // var arr = ["d", "b", "c", "a"];
        // arr.sort();
        // // abcd
        // console.log(arr);
        // arr.reverse();
        // console.log(arr);

        // arr = [3, 11, 2, 5, 66, 9];
        // arr.sort();
        // //返回11,2,3,5,66,9
        // console.log(arr);
        // 如何解决?
        //可以自己来指定排序规则
        //  - 可以在sort()添加一个回调函数,来指定排序规则
        //  - 回调函数中需要定义2个形参
        //  - 浏览器将会分别使用数组中的元素作为实参去调用函数
        //  - 使用那个元素调用不确定,但是数组中a一定在b前面
        //  - 浏览器会根据回调函数返回值来决定元素顺序
        //    - 如果返回小于0的值,则元素位置不变
        //    - 如果返回大于0的值,则元素交换位置
        //    - 如果返回等于0的值,则认为两个元素相等,也不交换位置
        var arr = [5, 14, 3, 2, 5, 3, 2, 6, 8, 9, 0, 3, 12];
        arr.sort(function(a, b) {
            // if (a > b) {
            //     return 1;
            // } else if (a < b) {
            //     return -1;
            // } else {
            //     return 0;
            // }
            //对上面简化 升序排列
            //a - b大于0 交换位置,小的去前面,大的去后面,a - b小于0 不交换位置
            //    小的保持前面位置 等于也是
            return a - b;
            //降序排列
            // return b - a;

        });
        // 倒叙排列
        console.log(arr);
    </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值