栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

如何获取数组中最大3项的索引值?

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获取数组中最大3项的索引值?

一、需求分析1. 数组最大3项

看到这个,首先就应该想到排序,我们可以先将数组从大到小进行排序,然后再获取排序后的数组前3项即可。

所需函数:

排序: sort()
获取前3项: filter()

2. 获取索引值

当我们将数组进行排序后,数组的索引值会发生变化,我们便无法再获取原始数组的索引值了,所以我们得在排序前对数组进行处理。

具体处理思路是,通过遍历将原始数组中的每一项与其索引捆绑在一起,我们可以使用对象数组的形式来实现捆绑,这样即使数组被重新排序,我们最终也能够找到原始数组每项的索引值。

所需函数:

通过遍历创建对象数组: map()

3. 整体实现思路

重构:通过遍历创建对象数组,其中每一项包含索引值和数值 —— map()
排序:根据对象数组每一项中的数值从大到小进行排序 —— sort()
筛选:通过筛选获取排序后的前3项组成数组 —— filter()
提取:通过遍历获取前3项数组的原始索引值 —— map()

二、具体代码实现
function fetchMaxIndex(arr){    return arr.map(function (item,i) {     //  重构,将数组每项绑定相应索引
        return {            key: i,            value: item
        }
    })
    .sort(function (a,b) {     //  排序,根据每项数值排序
        return b.value - a.value;
    })
    .filter(function (item,i) {     //  筛选,获取排序后前三项
        return i < 3
    })
    .map(function (item) {     //  提取,获取前三项原始索引
        return item.key
    });
}console.log(fetchMaxIndex([4,6,9,3,0,8,1]));   //  [2, 5, 1]

若对以上map()和filter()不了解,请戳简述forEach()、map()、every()、some()和filter()的用法;

若想了解以上sort()排序函数的具体用法,请戳JS数组排序

若想了解更多数组处理函数,请戳JS数组操作之增删改查;

本文重点总结:

对于数组的处理,无非就那么几个常用的函数方法,经常使用便能熟能生巧



作者:前端王睿
链接:https://www.jianshu.com/p/097929dac39a


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/246853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号