15.2js数组练习题答案

2024-05-28 17:36
文章标签 数组 js 练习题 答案 15.2

本文主要是介绍15.2js数组练习题答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(1)求出数组中的最大值

        var arr=[1,8,45,23,14,5]// 直接输出// console.log(Math.max(...arr))// 封装函数function fn(argArr){return Math.max(...argArr)}var res1=fn(arr)console.log(res1)       //45//复用函数var res2=fn([65,32,656,87,56,48])console.log(res2)       //656

(2)将数组中的值转为字符串,并用"|"分隔

        var arr=[1,8,'aa',23,14,5]// 直接输出function fn(argArr){return argArr.join('|')}console.log(fn(arr))    //1|8|aa|23|14|5

(3)选出数组中大于10的数

        var arr=[1,8,'aa',23,14,5]var res=arr.filter((item,index)=>{return item > 10})console.log(res)    //[23, 14]

(4)数组反转

        var arr=[1,8,'aa',23,14,5]arr.reverse()console.log(arr)    //[5, 14, 23, 'aa', 8, 1]

(5)数组去重

        双层for循环,当前项和每一项作比较,如果相同,则从数组中删除

        var arr=[1,2,"aa",1,2,"bb","aa","bb"]for(var i=0;i<arr.length-1;i++){for(var j=1;j<arr.length;j++){if(arr[i]===arr[j]&&i!==j){         arr.splice(j,1)    //两项相同删除后一项--->删除j索引位置的值}                    }}console.log(arr)        //[1, 2, 'aa', 'bb']//如果 arr.splice(i, 1);删除的是前一项,问题如下:
//第一轮去重 i=0   arr结果是:[2, 'aa', 1, 2, 'bb', 'aa', 'bb']
//第二轮去重 i=1   那么此项比较是arr[0]-> 'aa',就会漏掉2

(6)求出数组元素和

        var arr=[2,5,2,5,6,8,1]var sum=arr.reduce(function(pre,item){return pre+item})console.log(sum)    //29

(7)打印出数组的奇数

        var arr=[2,5,2,5,6,8,1]arr.forEach(function(item){if(item%2!==0){console.log(item)}})

(8)计算数组中能被3整除的偶数和

        var arr=[3,6,8,9,12,24,48,45,34]var sum=arr.reduce(function(prev,item){if(item%3==0&&item%2==0){prev=prev+item}return prev},0)console.log(sum)    //90

(9)有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

        var arr=[3, 6, 8, 9, 12, 24, 34, 45, 48]arr.push(7)arr.sort(function(a,b){return a-b})console.log(arr)    //[3, 6, 7, 8, 9, 12, 24, 34, 45, 48]

(10)将一个数组从大到小排列

        var arr=[3,88,81,19,12,24,48,45,34]arr.sort(function(a,b){return b-a})console.log(arr)        //[88, 81, 48, 45, 34, 24, 19, 12, 3]

(11)生成数组长度为30,且从2开始的所有偶数

        var arr=[]var count=2while(arr.length<30){arr.push(count)count=count+2}console.log(arr)

(12)数组扁平化,示例:var arr =[[1, 2], [3, [4, 5]]]; // 扁平后:[1, 2, 3, 4, 5]

var arr = [[1, 2], [3, [4, 5]]]
console.log(arr.flat(Infinity))
//或者 console.log(arr.flat(2))

(13)定义一个含有30个整型元素的数组,然后按顺序每5个数求出一个平均值,放在另一个数组中并输出

            var arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]var sumArr=[]var res=0arr.forEach(function(item,index){if(index%5==0&&index!=0){sumArr.push(res)res=0}res+=item})console.log(sumArr)

(14)封装函数书写代码实现下列效果

                    输入: [{name:'张三',sex: '男'}, {name:'花花',sex: '女'}]

                    输出: ['张三','花花']

            var arr= [{name:'张三',sex: '男'}, {name:'花花',sex: '女'}]var newArr=[]function fn(arr){arr.forEach(function(item,index){// console.log(Object.values(item)[0])newArr.push(Object.values(item)[0])return newArr});}fn(arr)console.log(newArr)     //['张三', '花花']

(15)封装函数书写代码实现下列效果

                    输入: [{name:'张三',sex: '男'}, {name:'花花',sex: '女'}]

                    输出: {'张三': '男', '花花': '女'}

            var arr= [{name:'张三',sex: '男'}, {name:'花花',sex: '女'}]var obj={}function fn(arr){arr.forEach(function(item,index){obj[Object.values(item)[0]]=Object.values(item)[1]return obj});}fn(arr)console.log(obj)     //{张三: '男', 花花: '女'}

(16)实现下列效果

            var arr = [0,1,2,2,3,3,3,4,4,4,4,6]

            var arr2 = arr.map(补全代码)

            console.log(arr2) // ['周日', '周一', '周二', '周二', '周三', '周三', '周三', '周四', '周四', '周四', '周四','周六']

        var arr = [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 6]var str=['日','一','二','三','四','五','六']var arr2 = arr.map(function (item) {return '周'+str[item]})console.log(arr2)// ['周日', '周一', '周二', '周二', '周三', '周三', '周三', '周四', '周四', '周四', '周四','周六']

(17)使用reduce统计一个数组中元素出现的次数

        定义一个对象用来存储

        var arr = [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 6]var obj={}arr.reduce(function(pre,item,index){if(!obj[item]){    //如果对象中没有这个keyobj[item]=1    //那么添加进去,并且value=1}else{obj[item]=obj[item]+1    //如果存在,value+1}return obj},0)console.log(obj)

(18)判断数组中出现次数最多的元素

        var arr = [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 6]var obj={}arr.reduce(function(pre,item,index){if(!obj[item] || item==0){obj[item]=1}else{obj[item]=obj[item]+1}return obj},0)console.log(obj)          //{0: 1, 1: 1, 2: 2, 3: 3, 4: 4, 6: 1}var newArr=Object.values(obj)console.log(newArr)       //获取对象中的属性值var max=Math.max(...newArr)console.log(max)         //获取出现次数最多的值--->4for(var k in obj){if(obj[k]==max){console.log('出现次数最多的是:'+k)}}

(19) 统计数组中重复的元素

        var arr = [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 6]//定义两个数组,一个用来判断是否重复// 一个用来存放重复的元素var arr1=[]var arrRep=[]arr.forEach(function(item){if(!arr1[item]){arr1.push(item)}else{arrRep.push(item)}})console.log(new Set(arrRep))        //[2,3,4]

(20)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组。

假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

        var nums = [2, 11,7 , 15]var target = 9var map = new Map();function fn(nums, target) {for (var i = 0; i < nums.length; i++) {let key = target - nums[i];console.log('key的值', key, map.has(key))//判断map中是否有keyif (map.has(key)) {return [map.get(key), i]}// 在map中添加nums[i],将索引设置为valuemap.set(nums[i], i);console.log("-------------",map)}}fn(nums, target) //[0,1]

map和set作用和语法:set和map数据结构-CSDN博客

上一篇:15.数组的方法(改变原数组和不改变原数组)-CSDN博客

下一篇:16.js数学方法和进制转换-CSDN博客

这篇关于15.2js数组练习题答案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1011234

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int

poj 3104 二分答案

题意: n件湿度为num的衣服,每秒钟自己可以蒸发掉1个湿度。 然而如果使用了暖炉,每秒可以烧掉k个湿度,但不计算蒸发了。 现在问这么多的衣服,怎么烧事件最短。 解析: 二分答案咯。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <c

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou