题目名称

给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。

序号代表了一个元素有多大。序号编号的规则如下:

序号从 1 开始编号。
一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。
每个数字的序号都应该尽可能地小。

示例

输入:arr = [40,10,20,30]

输出:[4,1,2,3]

题解

这个就相对来说较为简单了

首先针对原数组进行去重操作后,得到一个新的数组,然后在对这个不包含重复元素的数组进行从小到大排序

然后对原数组进行遍历操作,针对每一个原数组的元素,找到其在排序后的数组中的位置,替换原数组对应元素位置,最后的得到的新数组就是,原数组的数组序号转换

答案

1
2
3
4
var arrayRankTransform = function(arr) {
let arrSort = Array.from(new Set(arr)).sort((a, b) => a - b)
return arr.map(item => arrSort.indexOf(item) + 1)
};