登录|注册|帮助中心|联系我们

导航
首页 综合百科 生活常识 数码科技 明星名人 传统文化 互联网 健康 影视 美食 教育 旅游 汽车 职场 时尚 运动 游戏 家电 地理 房产 金融 节日 服饰 乐器 歌曲 动物 植物
当前位置:首页 > 互联网

js获取对象的值的方法(js对象取值的方法)

发布时间:2022年12月26日责任编辑:吴小强标签:方法js
原生Math.max方法

Math.max 方法不能接收数组,可以使用ES6的…将数组打散

const arr = [111, 12, 111, 34, 2, 5, 76];console.log(Math.max(...arr));

当然也可以用apply方法调用

console.log(Math.max.apply(null, arr)); 遍历获取最大值

遍历数组,依次比较,保存较大的数,最终得到的就是最大值,这里使用forEach遍历

function max2(arr) { ???let result = -Infinity; ???arr.forEach((item) => { ???????if (item > result) { ???????????result = item; ???????} ????}); ???return result;}console.log(max2(arr)); 利用排序获取最大值

将数组使用sort方法排序后,第一个元素或最后一个元素就是最大值,再用shift或者pop方法取出(由升序还是降序决定),值得注意的是这两个方法会修改原数组,可以使用slice方法复制一份数组再执行弹出元素操作

function max3(arr) { ???return arr.sort((a, b) => a - b).slice().pop();}console.log(max3(arr)); 使用filter排除小的值

使用filter函数依次取出<自身的元素,当取不出元素即返回的函数长度===零时,就取得了最大值,至于为什么用递归不用循环,用IIFE不用先声明后使用,嗯,就是单纯的不想

(function greater(arr, idx) { ???const res = arr.filter(item => item > arr[idx]); ???if (res.length === 1) { ???????console.log(res[0]); ???????return res[0]; ???} ???greater(arr, idx + 1);})(arr, 0); 使用every判断自己是否是最大值

使用every的原理和使用filter的原理类似,即当所有元素都<=本身的时候,本身就是最大值

(function greater(arr, idx) { ???if (arr.every(item => item <= arr[idx])) { ???????console.log(arr[idx]); ???????return arr[idx]; ???} ???greater(arr, idx + 1);})(arr, 0); 使用递归模拟数组方法

和上面两个方法类似,只是内层用了递归和IIFE模拟every

(function outer(arr, i) { ???let flag = function inner(arr, j) { ???????if (arr[j] <= arr[i]) { ???????????return false; ???????} ???????return arr.length < j + 1 ? inner(arr, j + 1) : true; ???}(arr, 0); ???if (flag) { ???????console.log(arr[i - 1]); ???????return arr[i - 1]; ???} ???outer(arr, i + 1);})(arr, 0);

其它知识推荐

溜溜百科知识网——分享日常生活学习工作各类知识。 垃圾信息处理邮箱 tousu589@163.com
icp备案号 闽ICP备14012035号-2 互联网安全管理备案 不良信息举报平台 Copyright 2023 www.6za.net All Rights Reserved