Javascript 如何将一个数字数组压缩为一个连续的数字序列而不丢失它们的位置?

Javascript 如何将一个数字数组压缩为一个连续的数字序列而不丢失它们的位置?,javascript,jquery,arrays,Javascript,Jquery,Arrays,假设我有这样一个数组: [34, 55, 12, 66, 2, 43, 230, 67] 现在,如果我们按升序排序这个数组,每个元素都会有一个新的索引(从索引0开始) 现在,我想要的是用索引+1替换每个元素,但是保持元素的顺序不变 期望输出如下: [3, 5, 2, 6, 1, 4, 8, 7] 我仅限于Javascript和jQuery。我怎样才能做到这一点 34比3的逻辑是,如果你订购第一个数组,你会得到这个 [2,12,34,43,55,66,67,230] 有了这个-你可以看到34

假设我有这样一个数组:

[34, 55, 12, 66, 2, 43, 230, 67]
现在,如果我们按升序排序这个数组,每个元素都会有一个新的索引(从索引0开始)

现在,我想要的是用索引+1替换每个元素,但是保持元素的顺序不变

期望输出如下:

[3, 5, 2, 6, 1, 4, 8, 7]
我仅限于Javascript和jQuery。我怎样才能做到这一点

34比3的逻辑是,如果你订购第一个数组,你会得到这个

[2,12,34,43,55,66,67,230]

有了这个-你可以看到34是新数组中的第三个项目。因此,它的新值应重置为3。

您可以从原始数组中对重复项进行排序和筛选:

var输入=[34,55,12,66,2,43,230,67];
var sortedAndFiltered=input.concat().sort(函数(a,b){
返回a-b;
}).过滤器(功能(元素、索引、自){
返回索引==自索引(elem);
});
var结果=[];
对于(变量i=0;i//此时,结果变量将包含[3,5,2,6,1,4,8,7]
34
转换为
3
230
转换为
8
的逻辑是什么?…您尝试了什么?你的代码看起来像什么?如果您没有尝试任何操作,请删除该问题,尝试一下,如果您有特定问题,请发布一个问题。我认为他希望对数组进行排序,然后将值替换为数组中每个数字的位置(1索引,而不是0索引)排序时。第一个数组表示通过数据库提要的未知整数数组。我需要规范化数组,并使用从1开始的干净整数进行进一步处理。@user1882476-请使用“编辑”将最后一条注释添加到问题本身中链接,以便阅读您的问题的人了解您想要的内容。您可以通过将原始数组转换为具有原始值和索引的对象数组,然后对对象进行排序,然后提取索引,而无需n平方秒。