我有这个数组:
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];
我想获得排序的数组键。
答案 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);