我有一个像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]
有没有办法获得排序数组的索引?
答案 0 :(得分:1)
由于数组中没有索引值关联,因此您需要首先建立:
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]; });
答案 1 :(得分:1)
您可以尝试这样的事情:
(function() {
var arr = [9, 0, 0, 1, 0, 5, 1, 3, 1];
var _temp = arr.map(function(item, index) {
return {
index: index,
value: item
}
});
console.log(_temp)
_temp.sort(function(a, b) {
if (a.value < b.value) return -1;
if (a.value > b.value) return 1;
return 0;
});
console.log(_temp)
console.log(_temp.map(function(item) {
return item.value
}))
console.log(_temp.map(function(item) {
return item.index
}))
})()
&#13;
答案 2 :(得分:-1)
这样的东西?
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);
答案 3 :(得分:-1)
使用sortedArray,您可以遍历数组,并使用indexOf()
方法获取旧数组中已排序数组的每个元素的索引。例如。
sortedArray.forEach(function(ele){
indexArray.push(oldArray.indexOf(ele));
});