原生JS内置对象的数组操作习题

  • A+
所属分类:Web前端
摘要

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


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

原生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个人(不重复)

原生JS内置对象的数组操作习题

步骤构思:

(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()); 

 

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

原生JS内置对象的数组操作习题

步骤构思:

(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));