获取小元素索引直到数组长度

时间:2016-02-25 04:59:07

标签: javascript

我必须对数组进行排序并希望得到索引,以便我可以根据此索引对另一个数组进行排序。 有两个数组ab我在第三个数组中保存了该数组的分区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] 但拼接不是一个好选择..我需要一个只删除元素而不是索引的函数。请问有什么想法吗?

已更新 问题解决但我想知道 是否可以删除元素而不是数组中的索引?

2 个答案:

答案 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"]