我必须对一个数组进行排序并想要获取索引,以便我可以根据该索引对另一个数组进行排序。
有两个数组 a
和 b
我将该数组的除法保存在第三个数组中,即 sortDiv
现在我想要小元素的索引,以便我可以根据索引对a
和b
进行排序。
代码就像
var a = [6, 7, 8, 9];
var b = [1, 2, 3, 4];
var sortA = [],
sortB = [],
sortDiv = [];
var div = a[0] / b[0];
for (var i = 0; i < a.length; i++) {
sortDiv.push(a[i] / b[i]);
}
var temp = sortDiv;
for (var i = 1; i < sortDiv.length; i++) {
var val = Math.min.apply(Math, temp);
var key = sortDiv.indexOf(val);
sortA.push(a[key]);
sortB.push(b[key]);
if (key > -1)
temp.splice(key, 1);
}
console.log(sortA + " " + sortB);
[9,8]
和 b 的 [4,3]
..而我想要 a=[9,8,7,6] b=[1,2,3,4]
但 splice 不是一个好的选择..我需要一个仅删除元素而不是索引的函数..有什么想法吗?
已更新 问题已解决,但我想知道 是否可以删除数组中的元素但不能删除索引?
最佳答案
尝试不删除元素,只需将其替换为最大元素+1,它会正常工作,这是更新的代码
var a = [6, 7, 8, 9];
var b = [1, 2, 3, 4];
var sortA = [],
sortB = [],
sortDiv = [];
var div = a[0] / b[0];
for (var i = 0; i < a.length; i++) {
sortDiv.push(a[i] / b[i]);
}
console.log(sortDiv);
var temp = sortDiv;
var max = Math.max.apply(Math, temp); // here we find the maximum
max += 1;
for (var i = 1; i <= sortDiv.length; i++) {
var val = Math.min.apply(Math, temp);
console.log(val);
var key = sortDiv.indexOf(val);
sortA.push(a[key]);
sortB.push(b[key]);
temp[key] = max; // here we update the minimum with maximum+1
}
console.log(sortA + " " + sortB);
关于javascript - 获取小元素索引直到数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618711/