(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=2 while(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=0 arr.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]){ //如果对象中没有这个key obj[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) //获取出现次数最多的值--->4 for(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 = 9 var 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中是否有key if (map.has(key)) { return [map.get(key), i] } // 在map中添加nums[i],将索引设置为value map.set(nums[i], i); console.log("-------------",map) } } fn(nums, target) //[0,1]
map和set作用和语法:set和map数据结构-优快云博客
15.2js数组练习题答案
于 2024-05-27 17:16:14 首次发布