首页 > IT职业 > IT图书 > 如何获取数组中最大3项的索引值?
看到这个,首先就应该想到排序,我们可以先将数组从大到小进行排序,然后再获取排序后的数组前3项即可。
所需函数:
排序: sort()
获取前3项: filter()
当我们将数组进行排序后,数组的索引值会发生变化,我们便无法再获取原始数组的索引值了,所以我们得在排序前对数组进行处理。
具体处理思路是,通过遍历将原始数组中的每一项与其索引捆绑在一起,我们可以使用对象数组的形式来实现捆绑,这样即使数组被重新排序,我们最终也能够找到原始数组每项的索引值。
所需函数:
通过遍历创建对象数组: map()
① 重构:通过遍历创建对象数组,其中每一项包含索引值和数值 —— 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 若对以上map()和filter()不了解,请戳简述forEach()、map()、every()、some()和filter()的用法;
若想了解以上sort()排序函数的具体用法,请戳JS数组排序
若想了解更多数组处理函数,请戳JS数组操作之增删改查;
本文重点总结:
对于数组的处理,无非就那么几个常用的函数方法,经常使用便能熟能生巧
作者:前端王睿
链接:https://www.jianshu.com/p/097929dac39a
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/644/viewspace-2812783/ ,如需转载,请注明出处,否则将追究法律责任。