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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

local dimming(局部调光)介绍

文章目录 1. 什么是local dimming2. 工作原理3. 类型4. 优点5. 缺点和局限7. 技术发展趋势 1. 什么是local dimming local dimming&#xff08;局部调光&#xff09;是电视和显示器中用于提升画面对比度和画质的背光技术。其基本原理是将背光源&#xff08;通常是LED&#xff…

C++ ─── string的模拟实现

本博客将简单实现来模拟实现string类&#xff0c;最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。 下期我们继续讲解完整版string的模拟实现&#xff08;将不再会是浅拷贝了&#xff09; 说明&#xff1a;下述string类没有显式定义其拷贝构造函数与赋值运…

Java应用中文件上传安全性分析与安全实践

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一. 文件上传的风险 二. 使用合适的框架和库 1. Spr…

java项目技术方案——书写示例

在编写一个Java项目的技术方案时&#xff0c;我们需要考虑多个方面&#xff0c;包括项目架构、技术栈、开发工具、数据持久化、安全性、代码结构等。以下是一个基于Spring Boot框架的Java Web项目的技术方案示例&#xff0c;包括代码示例。 1. 项目概述 本Java项目是一个基于…

从华为云Redis到AWS ElastiCache的操作方法

越来越多企业选择出海&#xff0c;那么就涉及到IT系统的迁移&#xff0c;本文将详细介绍如何将华为云Redis顺利迁移到AWS ElastiCache的操作方法&#xff0c;九河云将为您介绍迁移步骤以帮助您顺利完成这一重要任务。 **1. 确定迁移计划** 在开始迁移之前&#xff0c;首先要制…

slam的应用场景与落地步骤

常用的slam有2d 3d&#xff0c;激光和视觉slam。本文简要介绍一下slam的应用场景&#xff0c;和落地方案。 常用的2d框架有&#xff0c;gmapping ,cartographer, hector, 3d激光有loam aloam lio-sam, fast-lio fastlio2, 视觉有orbslam2/3, vio等 常用的slam传感器有&#xff…

Maven重新加载jar包

环境&#xff1a;Windows maven版本&#xff1a;3.9.6 1.下载maven Index of /dist/maven/maven-3/3.9.6/source 2.配置maven环境变量 例如&#xff1a; MAVEN_HOME:D:\tools\apache-maven-3.9.6(maven的本地地址) 在Path目录后添加;%MAVEN_HOME%\bin; 3.打开cmd&#xf…

【线性代数】【一】1. 线性方程组与线性组合

文章目录 前言一、线性方程组的求解1.1 直线的交点1.2 向量的加权求和 二、线性组合的表示范围三、线性方程组的解的分析总结 前言 有段时间没更新了&#xff0c;准备开个新坑&#xff0c;写点数学基础相关的内容&#xff0c;计划先过一遍线性代数&#xff0c;再扩展到矩阵论&…

什么是http状态码?常见的有哪些?它们所代表什么含义?

HTTP状态码是由HTTP协议定义的一组三位数字&#xff0c;用于表示服务器对请求的处理结果的状态。 常见的HTTP状态码及其含义如下&#xff1a; - 1xx&#xff1a;信息性状态码&#xff0c;表示请求已被接收&#xff0c;继续处理。 - 100&#xff1a;Continue&#xff08;继…

【机器学习01】基本概念

机器学习是计算机科学的一个分支&#xff0c;通过算法和统计模型使计算机系统能够在没有明确指令的情况下执行特定任务。机器学习的核心思想是从数据中学习规律&#xff0c;并基于这些规律进行预测或决策。以下是机器学习的一些基本数学定义和概念&#xff1a; 1. 数据集 (Dat…

科普:水冷负载的工作原理

水冷负载是一种利用水作为冷却介质&#xff0c;将电子设备产生的热量传递到外部环境的散热方式。它广泛应用于各种电子设备&#xff0c;如服务器、数据中心、电力设备等&#xff0c;以提高设备的运行效率和稳定性。本文将对水冷负载的工作原理进行简要科普。 水冷负载的工作原理…

NLP(17)--大模型发展(1)

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 大模型的演化&#xff1a; ElMO : 类似双向lstm 结果和词向量拼接 预训练鼻祖 GPT :使用了Transformer 模型 开始使用Token &#xff08;发现预训练的作用&#xff09; Bert&#xff1a;认为双向比单向好 MLM(双向) 优于 LT…

js怎么保存用户登录信息?js cookie操作封装

在web开发中&#xff0c;用户登录后需要保存登录信息进行身份识别&#xff0c;登录后的操作都需要带上身份信息请求接口。保存登录信息有多种方法&#xff0c;这里使用cookie进行操作。 最终成果&#xff1a;封装cookie操作模块 // utils/cookie.js export default {// 设置co…

2023年广东省程序设计大赛

C 双指针&#xff0c;排序 买便宜的&#xff0c;用最贵的卖出 #include<bits/stdc.h>using namespace std; #define int long long const int N 2e5 10; int n,m; int re[2]{1,4}; int bl[4]{2,3,5,6}; int f; struct node {int x,y; }a[N]; bool cmp(node W,node Q…

ubuntu装完gnome后如何moba登录使用

在Ubuntu中安装了GNOME桌面环境后&#xff0c;你可以通过以下步骤设置MobaXterm远程桌面访问&#xff1a; 确保你的Ubuntu系统已经安装了xrdp服务&#xff0c;如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo apt update sudo apt install xrdp安装GNOME桌面…

Echarts 多y轴折柱混合图

先说下需求&#xff1a;在多y轴的折柱混合图&#xff0c;点击图例时&#xff0c;对应的图会隐藏&#xff0c;但是对应的y轴的线和y轴上的那么不会隐藏。 因为是点击图例&#xff0c;所以这里用到点击事件&#xff0c;Echarts有 legendselectchanged 事件&#xff0c;如下代…

【Linux】POSIX线程库——线程控制

目录 1.线程创建方法 例&#xff1a;多线程创建 2.线程终止 2.1 return nulptr; 2.2 pthread_exit(nullptr); 3. 线程等待 3.1 等待原因 3.2 等待方法 线程终止的返回值问题 4.线程取消 5. 线程分离 5.1 分离原因 5.2 分离方法 6.封装线程 用的接口是POSIX线程库…

音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解

文章目录 前言1.模拟数字转换&#xff08;ADC&#xff09;1.1ADC的关键步骤&#xff1a; 2.数字模拟转换&#xff08;DAC&#xff09;2.1DAC 的基本流程包括&#xff1a; 3.PCM数据3.1PCM 数据的关键要素包括&#xff1a; 4.WAV文件4.1 WAV的构成4.2WAV文件的标准块结构4.3WAV的…

代码随想录算法训练营第三十八天 | 435.无重叠区间、763.划分字母区间、56.合并区间

目录 435.无重叠区间 思路 代码 763.划分字母区间 思路 代码 56.合并区间 思路 代码 今天的三道题目&#xff0c;都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#xff01…

YOLOV8逐步分解(6)_模型训练初始设置之image size检测batch预设及dataloder初始化

yolov8逐步分解(1)--默认参数&超参配置文件加载 yolov8逐步分解(2)_DetectionTrainer类初始化过程 yolov8逐步分解(3)_trainer训练之模型加载 YOLOV8逐步分解(4)_模型的构建过程 YOLOV8逐步分解&#xff08;5&#xff09;_模型训练初始设置之混合精度训练AMP 接逐步分解…