数组小练习

提示:如有侵权,请告知

数组小练习

前言

学习js,数组题目练习

一、数组是什么?

数组是指一组数据的集合,它也是个对象,其中每个数据被称为元素,在数组中可以存放任意类型的元素,数组是将一组数据存储在单个变量名下的优雅方式

二、练习

1.熟悉js数组部分方法

方法如下:

1.push() 末尾加元素,返回值是新数组长度

2.unshift() 开头加元素,返回新数组长度

3.pop() 删除数组最后一个元素,并返回该元素的值(删哪个返回哪个)

4.shift() 删除第一个元素,并返回该元素的值

5.sort() 数组排序,先转成字符串,再比较Unicode编码,所以数字排序可能会出错,可以自己指定排序规则
sort()里加回调函数,指定规则
回调函数有两个形参,浏览器分别使用数组的元素作为实参去调用回调函数,但是哪个元素调用不确定,但是肯定再数组中且a在b前面
回调函数返回值决定元素顺序, 返回值>0——>元素交换位置
返回值<=0——>不交换
arrayObject.sort(sortby);参数sortby可选。规定排序顺序,必须是函数。
如果需要升序,则返回a-b
如果需要降序排列,则返回b-a
arr5.sort((a, b) => a - b);

6.splice() 添加/删除数组元素
会影响到原数组,会将指定元素从原数组中删除,并将删除的元素作为返回值返回
用法:array.splice(start,deleteCount,item…)
-参数:
第一个,表示开始位置的索引
第二个,表示删除的数量
第三个及以后…
可以传递一些新的元素,这些元素将会自动插入到开始位置,索引前边

7.slice() 从数组中提取指定元素,不改变原数组,将提取值放入新数组中返回
用法:array.slice(start,end)
参数:start是截取的开始数组索引
end参数等于你要取的最后一个字符的位置值加上1(可选)
即【start,end)
-索引可以传递一个负值,如果传递一个负值,则从后往前计算
-1:倒数第一个,-2:倒数第二个

8.indexOf() 可以在字符串和数组上使用。
可返回某个指定的字符串值(基本数据类型)在字符串、数组中第一次出现的位置。如果不存在,则返回-1

9.lastIndexOf()
——返回指定元素在数组中的最后一个索引,如果不存在,返回-1
10.concat() 连接两个及以上数组,不改变原数组,并将新的数组返回

11.reverse() 颠倒数组中元素的顺序,原数组改变

12.jion() 数组转成一个字符串,不改变原数组,返回值为转化后的字符串
可以指定一个字符串作为参数,成为转化后的字符串的分隔符
默认使用逗号作为分隔符

13.forEach() 用于调用数组的每个元素,并将元素传递给回调函数
forEach方法中的function回调有三个参数:
第一个参数是遍历的数组内容,
第二个参数是对应的数组索引,
第三个参数是数组本身
forEach 方法没有返回值,而且它也不会改变原数组

14.some() 判断数组中是否存在满足条件的项,只要有一项满足,返回true
var arr2 = arr1.some(x => {
return x < 3;
});
console.log(arr2); // true

15.map() 返回一个新数组,数组中的元素是原数组元素调用函数处理后的值
let arr13 = [1, 2, 3, 4, 5, 6];
let item5 = arr13.map((item) => {return item + 100;
});
console.log(item5); // [101, 102, 103, 104, 105, 106]
console.log(arr13); // [1, 2, 3, 4, 5, 6]

16.reduce() 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
let arr12 = [1, 2, 3, 4, 5, 6];
let item4 = arr12.reduce((total,currentValue)=>{return total + currentValue;
}, 0);
console.log(item4); // 21
console.log(arr12); // [1, 2, 3, 4, 5, 6]
17.split() 使用指定的分割符字符串将一个string对象分成子字符串数组
以指定分割符决定拆分位置
var res=“red,hello,1,3,4”;
var arr4=res.split(‘,’)
console.log(arr4, “arr4”);

2.练习

题目:

1、将数组[2,4,6,8,10]的内容反过来存放,输出[10,8,6,4,2]

        var arr = [2,4,6,8,10];
        var newarr = [];
        for(var i=arr.length-1;i>=0;i--){
            newarr[newarr.length] = arr[i];
        }
        alert(arr+'反过来存放,输出为'+newarr);

2、数组排列,把一组数据按从大到小排列(冒泡排序)。

        var arrs=[],num;
        var newarr = [],temp;
        for(var i=1;i<=arrs.length+1;i++){
            num=prompt('输入数组第'+i+'个值'+'\n提示:当输入*break*时,结束输入');
            if(num=='*break*'){
                break;
            }
            arrs[arrs.length]=num;
            newarr[newarr.length]=num;
        }
        for(var i =0;i<newarr.length-1;i++){
            for(var j =0;j<newarr.length-1-i;j++){
                if(newarr[j+1]>=newarr[j]){
                    temp=newarr[j];
                    newarr[j]=newarr[j+1];
                    newarr[j+1]=temp;
                }
            }
        }
        alert('数组:'+arrs+'\n从大到小排列结果为:'+newarr);        
  1. 已知有字符串 foo=”get-element-by-id”,写一个 function 将其转化成驼峰表示法”getElementById”。
        var foo='get-element-by-id';
        var res=''
    
        function getArr(foo){
            var flag=false;
            for(let i=0;i<foo.length;i++){
                
                if(foo[i]=='-'){
                    //当遇到 - 就标记,意思下一个就要变大写,
                    flag=true;
                   
                }
                // 这个就是 - 后面一个字符要走的代码
                else {

                    if(flag){
                    res+=foo[i].toUpperCase();
                    // 这里修改为大写,一定记得让flag恢复,否则,永远会出现全部都大写的情况
                    flag=false;
                    }
                    else  {
                        res+=foo[i];
                    
                    }
                    
                }
               
            }
            return res;

        }
        console.log(getArr(foo));

4、弹出框接收N位评委的打分,去掉一个最高分和一个最低分,求最后的平均分。

        var arrs=[],num,N;
        var newarr = [],temp;
        for(var i=1;i<=arrs.length+1;i++){
            num=prompt('输入数组第'+i+'个评委的打分'+'\n提示:当输入*break*时,结束输入');
            if(num=='*break*'){
                N = i-1;//接受到正确评分的人数
                break;
            }
            arrs[arrs.length]=num;
            newarr[newarr.length]=num;
        }
        for(var i =0;i<newarr.length-1;i++){
            for(var j =0;j<newarr.length-1-i;j++){
                if(newarr[j+1]>=newarr[j]){
                    temp=newarr[j];
                    newarr[j]=newarr[j+1];
                    newarr[j+1]=temp;
                }
            }
        }
        newarr.shift();//去掉一个最高分
        newarr.pop();//去掉一个最低分
        var sum = average = 0;
        for(var i = 0;i<newarr.length;i++){
            sum += +newarr[i];
        }
        average = sum/newarr.length;
        alert(`接收到${N}位评委的打分,去掉一个最高分和一个最低分后\n平均分为:${average}`);

5、把下面数组的首尾两个元素互换

    var arr = ["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"];
    var newarr = arr.slice(1,arr.length-1);
    newarr.unshift(arr[arr.length-1]);
    newarr.push(arr[0]);
    alert('首尾两个元素互换:\n'+'原数组: '+arr+'\n新数组:'+newarr);

6、封装一个函数,判断某个值是否存在某个数组里面。

        function Pd(num,arr){
            var res = arr.indexOf(num);
            if(res>=0){
                alert(num+' 在数组'+arr+' 中存在');
            }else{
                alert(num+' 在数组'+arr+' 中不存在');
            }
        } 
        var arrs=[],num,nums;
        nums=prompt('你想判断哪个值在数组中存不存在?');
        for(var i=0;i<arrs.length+1;i++){
            num=prompt('数组第'+(i+1)+'个值');
            if(num=='*break*'){
                break;
            }
            arrs[arrs.length]=num;
        }
        Pd(nums,arrs);

总结

以上就是今天的小练习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值