zoukankan      html  css  js  c++  java
  • 原生JS内置对象的数组操作习题

    (一)数组的首尾两个元素互换

    步骤构思:

    (1)用内置对象splice()进行元素更换
    (2)splice(position索引位置,unit删除单位数,element增加元素)

    var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
    function exchange(arr) {
        var temp = arr[0];
        arr.splice(0, 1, arr[arr.length - 1]);
        arr.splice(arr.length - 1, 1, temp);
        return arr;
    }
    var result = exchange(arr);
    console.log(result); // ["赵本山", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "鹿晗"]
    

    (二)从名单中随机抽取4个人(不重复)

    步骤构思:

    (1)用内置对象Math.floor取整,Math.random随机数,*num放大倍数
    (2)indexOf(element查找元素, position开始查找位置),存在返回索引值/不存在返回值-1
    (3)push(element追加元素)

    var arrTwo = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
    var newArr = []; 
    function draw() {
        while (newArr.length < 4) { //创建的空数组长度设置循环体
            var num = Math.floor(Math.random() * 7); // 随机生成索引号0-7,若超过8则undefined;变量num储存作为arr数组的索引值
            if (newArr.indexOf(arrTwo[num]) === -1) { //判断随机元素在newArr数组中是否存在,若不存在indexOf()返回值为-1
                newArr.push(arrTwo[num]); // 将不重复元素push到newArr数组
            }
        }
        return newArr;
    }
    console.log(draw());
    

    (三)名单随机排序(不重复)

    步骤构思:

    (1)获取数组长度
    (2)遍历随机索引
    (3)交换元素

    法一
    var arrThr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
    function shuffle(arrThr) {
        var len = arrThr.length; // len = 7
        for (var i = 0; i < len - 1; i++) { // i < 6
            var index = parseInt(Math.random() * (len - i)); // * 6--
            var temp = arrThr[index]; // 暂存temp进行交换元素
            arrThr[index] = arrThr[len - i - 1]; // arr[6]
            arrThr[len - i - 1] = temp; // arr[5]
        }
        return arrThr;
    }
    console.log(shuffle(arrThr));
    
    法二
    var arrThr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
    function shuffle(arrThr) {
        let len = arrThr.length; // len = 7
        while (len) {
            let j = Math.floor(Math.random() * len--); // *6 --
            [arrThr[j], arrThr[len]] = [arrThr[len], arrThr[j]];
        }
        return arrThr;
    }
    console.log(shuffle(arrThr));
    


    作者:MaricoCheung
    出处:http://www.cnblogs.com/MaricoCheung/
    ——有心人做有心事哦,晚安EmilyChen!

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    第二次,营造完整的人生(上)
    御风者(二)——狼王
    我的个人博客
    FTP 协议解析
    关于 Wireshark3 中 GeoIP 的问题
    CentOS8 NextCloud 私有云存储搭建
    Windows10 临时将线程绑定至指定CPU的方法
    CentOS8 yum/dnf 配置国内源(临时)
    Cknife流量分析
    samba + OPENldap 搭建文件共享服务器
  • 原文地址:https://www.cnblogs.com/MaricoCheung/p/13775581.html
Copyright © 2011-2022 走看看