对数组进行排序并将其索引存储在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秒,您将提供答案的后半部分…?您可能需要一种中间数据格式来保存值和索引,并根据值对其进行排序。