我必须对数组进行排序并希望得到索引,以便我可以根据此索引对另一个数组进行排序。
有两个数组a
和b
我在第三个数组中保存了该数组的分区sortDiv
现在我想要小元素的索引,以便我可以对a
和{进行排序根据索引{1}}
代码就像
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]
但拼接不是一个好选择..我需要一个只删除元素而不是索引的函数。请问有什么想法吗?
已更新 问题解决但我想知道 是否可以删除元素而不是数组中的索引?
答案 0 :(得分:1)
尝试不删除元素只是用最大元素+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);
答案 1 :(得分:0)
如果问题是关于使用splice根据值而不是索引删除项目,请获取索引,然后使用splice:
var a = ['a', 'b', 'c'];
a.splice(a.indexOf('b'), 1);
console.log(a); // ["a", "c"]