对数组进行排序并将其索引存储在javascript中的另一个数组中

对数组进行排序并将其索引存储在javascript中的另一个数组中,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个类似于array=[9,0,0,1,0,5,1,3,1]的数组。我想对这个数组进行排序,并将排序后的数组元素的索引作为另一个数组来获取 即分类后: sortedArray = [0,0,0,1,1,1,3,5,9] indexArray = [1,2,4,3,6,8,7,5,0] 有什么方法可以得到排序数组的索引吗?类似这样的东西 var array = [9,0,0,1,0,5,1,3,1]; var indexArray = []; for (var i = 0; i <

我有一个类似于
array=[9,0,0,1,0,5,1,3,1]
的数组。我想对这个数组进行排序,并将排序后的数组元素的索引作为另一个数组来获取

即分类后:

sortedArray = [0,0,0,1,1,1,3,5,9]
indexArray = [1,2,4,3,6,8,7,5,0]
有什么方法可以得到排序数组的索引吗?

类似这样的东西

var array = [9,0,0,1,0,5,1,3,1];
var indexArray = [];

for (var i = 0; i < array.length; ++i) {
    indexArray.push(i);
}

var sortedArray = array.sort();

console.log(sortedArray);
console.log(indexArray);
var数组=[9,0,0,1,0,5,1,3,1];
var indexArray=[];
对于(变量i=0;i
由于数组中没有索引值关联,您需要首先建立:

var tmp = array.map(function (val, i) { return [i, val]; });
// [[0, 9], [1, 0], ..]
然后对其进行排序:

tmp.sort(function (a, b) { return a[1] - b[1]; });
然后再次提取索引和/或值:

var indexArray = tmp.map(function (i) { return i[0]; });

使用sortedArray,您可以在数组上循环,并使用
indexOf()
方法获取旧数组中已排序数组的每个元素的索引。比如说

sortedArray.forEach(function(ele){
  indexArray.push(oldArray.indexOf(ele));
});

您可以尝试以下方法:

(函数(){
var-arr=[9,0,0,1,0,5,1,3,1];
var_temp=arr.map(功能(项目、索引){
返回{
索引:索引,,
价值:项目
}
});
控制台日志(_temp)
_温度排序(功能(a、b){
如果(a.valueb.value)返回1;
返回0;
});
控制台日志(_temp)
控制台日志(临时映射(功能(项)){
返回项.value
}))
控制台日志(临时映射(功能(项)){
返回项.索引
}))

})()
我不明白你的表中的indexArray是什么exemple@dan因此,再过4.5秒,您将提供答案的后半部分…?您可能需要一种中间数据格式来保存值和索引,并根据值对其进行排序。