我有這個特殊的花車陣列
segm3 = [0.0, 2.5, 3.62, 0.0, 2.5, 3.62, 0.0]
我希望在保留原始索引的同時對其進行排序。這是我的代碼:
var indices = Array.from(Array(segm3.length).keys())
.sort(function(a,b) { if (segm3[a] > segm3[b]) return 1;
else if (segm3[a]<segm3[b]) return -1 ;else return 0;})
當我嘗試 console.log 索引時,我得到了這個
[
0, 3, 6, 1,
4, 2, 5
]
應該是對的,但是在對 segm3 進行排序之后,如何使用索引串列回傳以形成原始 segm3 ?
uj5u.com熱心網友回復:
要保留原始索引,您可以使用Array.prototype.map()和Array.prototype.sort():
代碼:
const segm3 = [0.0, 2.5, 3.62, 0.0, 2.5, 3.62, 0.0]
const segm3SortedWithIndexes = segm3
.map((f, i) => ({
floatNumber: f,
index: i, // <-- original index
}))
.sort((a, b) => a.floatNumber - b.floatNumber)
console.log('"segm3" with original index:', segm3SortedWithIndexes)
const result = segm3SortedWithIndexes.map(({ floatNumber: f }) => f)
console.log('"segm3" sorted:', result)
uj5u.com熱心網友回復:
后segm3.sort(function(a,b) {return a-b})
只是
let resultArr;
for(var i=0;i<indices.length;i ){
resultArr[indices[i]]=segm3[i]
}
就這么簡單,但我的心都融化了
uj5u.com熱心網友回復:
根據 中的值對索引進行排序后segm3,如果進行排序,則可以通過使用陣列從排序后的陣列中提取值來segm3恢復 的原始排序:segm3indicessegm3
const segm3 = [0.0, 2.5, 3.62, 0.0, 2.5, 3.62, 0.0]
console.log(JSON.stringify(segm3))
let indices = Array.from(Array(segm3.length).keys())
.sort((a,b) => segm3[a] - segm3[b])
console.log(JSON.stringify(indices))
segm3.sort((a,b) => a - b);
console.log(JSON.stringify(segm3))
let origsegm3 = indices.map(i => segm3[i])
console.log(JSON.stringify(origsegm3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485223.html
標籤:javascript 数组 排序 索引
下一篇:計算嵌套串列中串列元素的出現次數
