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