gpt4 book ai didi

javascript排序稀疏数组保持索引

转载 作者:IT王子 更新时间:2023-10-29 03:15:01 26 4
gpt4 key购买 nike

对稀疏数组进行排序并使元素保持在相同索引上的最佳方法是什么?例如:

a[0] = 3, 
a[1] = 2,
a[2] = 6,
a[7] = 4,
a[8] = 5,

我想排序后有

a[0] = 2, 
a[1] = 3,
a[2] = 4,
a[7] = 5,
a[8] = 6.

最佳答案

这是一种方法。它将定义的数组元素复制到一个新数组并保存它们的索引。它对新数组进行排序,然后将排序后的结果放回先前使用的索引中。

var a = [];
a[0] = 3;
a[1] = 2;
a[2] = 6;
a[7] = 4;
a[8] = 5;


// sortFn is optional array sort callback function,
// defaults to numeric sort if not passed
function sortSparseArray(arr, sortFn) {
var tempArr = [], indexes = [];
for (var i = 0; i < arr.length; i++) {
// find all array elements that are not undefined
if (arr[i] !== undefined) {
tempArr.push(arr[i]); // save value
indexes.push(i); // save index
}
}
// sort values (numeric sort by default)
if (!sortFn) {
sortFn = function(a,b) {
return(a - b);
}
}
tempArr.sort(sortFn);
// put sorted values back into the indexes in the original array that were used
for (var i = 0; i < indexes.length; i++) {
arr[indexes[i]] = tempArr[i];
}
return(arr);
}

工作演示:http://jsfiddle.net/jfriend00/3ank4/

关于javascript排序稀疏数组保持索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12137690/

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