gpt4 book ai didi

Javascript - 排序后获取 'WILL BE' 关系的索引数组

转载 作者:行者123 更新时间:2023-11-28 12:18:33 25 4
gpt4 key购买 nike

我有一个非常简单的问题。假设我有一个数组

a = [10,40,30,20,60,50]

排序后,它将是(假设我使用 sort_a = a.sort())

sort_a = [60,50,40,30,20,10]

我想创建一个索引数组,它指定排序后该元素将位于排序数组中的哪个位置。从上面的例子来看,结果是

a_sortedindices = [6, 3, 4, 5, 1, 2]

..意思是排序时10位于第6位,40位于第3位...等等

最佳答案

  1. 将值与其当前索引配对
  2. 根据原始值对数组进行排序
  3. 将货币对与其新指数合并
  4. 根据原始索引对新数组进行排序
  5. 从排序数组中获取新索引

let values = [10,40,30,20,60,50];

let indices = values
.map((v, i) => ({ v, i }))
.sort((l, r) => r.v - l.v)
.map(({v, i}, i2) => ({ v, i, i2 }))
.sort((l, r) => l.i - r.i)
.map(p => p.i2);

console.log(indices);

这会产生一个基于 0 的索引数组,因为 JavaScript 使用基于 0 的索引。如果您想要像问题中那样从 1 开始的索引,可以将倒数第二行中的 p.i2 更改为 p.i2 + 1

关于Javascript - 排序后获取 'WILL BE' 关系的索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com