进行排序的数组键

时间:2019-04-05 13:54:42

标签: javascript sorting

我有这个数组:

let arr = [ 0.125, 0.42857142857142855, 0.5, 0.5, 0 ];

我想像这样按索引对数组的顺序进行排序:

[2, 3, 1, 0, 4];

不是这样的:

[0.5, 0.5, 0.42857142857142855, 0.125, 0];

我想获得排序的数组键。

2 个答案:

答案 0 :(得分:6)

您可以应用sort()的数组Object.entries()。然后map()将其锁定。

let arr = [ 0.125, 0.42857142857142855, 0.5, 0.5, 0 ];

let res = Object.entries(arr).sort(([,v1],[,v2]) => v2 - v1).map(x => +x[0])
console.log(res)

答案 1 :(得分:3)

可以从起始数组创建索引,值的列表,因此您可以排序并重新映射到所需的输出:

let arr = [ 0.125, 0.42857142857142855, 0.5, 0.5, 0 ];
var result = arr.map((el, i) => ({i, el}))
         .sort((a, b) => b.el - a.el).map(({i}) => i);

console.log(result);