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

标签 javascript

我必须对一个数组进行排序并想要获取索引,以便我可以根据该索引对另一个数组进行排序。 有两个数组 ab 我将该数组的除法保存在第三个数组中,即 sortDiv 现在我想要小元素的索引,以便我可以根据索引对ab进行排序。 代码就像

   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);
我得到了 a 的 [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/

相关文章:

javascript - 设置输入:radio by jQuery then check checked by clicking

javascript - Teamviewer 与 JNDI 冲突 - 为传出使用更高的端口号 (win7)

javascript - Angular2 ExceptionHandler - 检查错误对象是否为 Response

javascript - Angular then() 内的多个函数

javascript - 是否可以从任何已加载 jquery 的页面向 google.com 发出成功的 ajax get 请求?

javascript - 在 Angular 分量中使用 'require'

javascript - 如何规范跨浏览器的 CSS3 过渡结束事件?

javascript - 如何在另一个函数中使用一个 JavaScript 函数接收的 JSON 对象?

javascript - 如何使用 JavaScript 或 HTML 下载文本文件 onclick

javascript - 使用 MultiDatesPicker 禁用除特定日期列表之外的所有日期