美文网首页让前端飞我爱编程前端开发
如何获取数组中最大3项的索引值?

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

作者: 前端王睿 | 来源:发表于2018-07-24 05:35 被阅读5次

一、需求分析

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数组操作之增删改查

本文重点总结:

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

相关文章

  • 矩阵中的幸运数

    题目: 题目的理解: 按行遍历二维数组,获取一行中的最小值A和所在的索引。获取所在索引的列,求最大值B。判断A和B...

  • 数组二

    ackage com.itheima_04;/* * 数组获取最值(获取数组中的最大值最小值) */public ...

  • 1.5 数组

    今日内容数组概念数组的定义数组的索引数组内存数组的遍历数组的最大值获取数组反转数组作为方法参数和返回值 目标理解容...

  • 数组操作

    判断元素是否在数组中 获取数组最大值 数组排序

  • PHP(7)数学、日期和错误处理

    一、数学函数 max($arr);获取数组中的最大值 min($arr);获取数组中的最小值 mt_rand(a,...

  • PHP编程指南(六)数组

    索引数组 定义 方式一: 方式二: 获取指定索引位置上的值: 遍历索引数组 索引数组的长度 通过count()函数...

  • 8、NumPy读写文件和基本函数

    均值(加权)、最大、最小、极差、中位数、方差、相邻元素差值、平方根、最大值的索引值、最小值的索引值、【所有数组中第...

  • OC获取数组的最大值最小值

    如何获取数组的最大值,其实oc可以通过valueForKeyPath方法来设置你想要获取的一些数组,比如数组的最大...

  • iOS获取数组的最大值

    如何获取数组的最大值,其实oc可以通过valueForKeyPath方法来设置你想要获取的一些数组,比如数组的最大...

  • 30S学习javascript

    数组 返回数组中的最大值. 将Math.max()与扩展运算符 (...) 结合使用以获取数组中的最大值。 返回数...

网友评论

    本文标题:如何获取数组中最大3项的索引值?

    本文链接:https://www.haomeiwen.com/subject/fxmouftx.html