![](/img/trans.png)
[英]JS: Reverse an Array but Reverse the Original Array Only --> Error: running with no output
[英]keep indexes of original array of floats at sorting, and reverse sort to get back the original array afterwards js
我有这个特殊的花车数组
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 ?
要保留原始索引,您可以使用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)
在segm3.sort(function(a,b) {return ab})
之后
只是
let resultArr;
for(var i=0;i<indices.length;i++){
resultArr[indices[i]]=segm3[i]
}
就这么简单,但我的心都融化了
根据segm3
中的值对索引进行排序后,如果对segm3
进行排序,则可以通过使用indices
数组从排序的segm3
数组中提取值来segm3
segm3 的原始顺序:
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.